首页 > 解决方案 > 从类内结构方法获取类的引用

问题描述

我有这个代码:

//.h
class A
{
    struct B
    {
      void SomeMethod();
    }
    B b;
}
//.cpp
void A::B::SomeMethod()
{
    //here will be code
}

我可以从中获取到类对象的链接ASomeMethod()?因为this在 struct object 上返回引用b

也许答案很容易找到,但我无法提出正确的要求。

感谢帮助。

标签: c++reference

解决方案


从设计(B 是 A 的私有成员)看起来用户只能访问 A 类接口。那么只将父类指针传递给方法呢:

class A
{
    struct B
    {
      void SomeMethod(A* parent);
    };
    B b;
public:
    void callSomeMethod() { b.SomeMethod(this); }
};

//.cpp
void A::B::SomeMethod(A* parent)
{
    std::cout << "parent addr: " << parent << std::endl;
}

int main()
{
    A a;
    std::cout << "a addr: " << &a << std::endl;
    a.callSomeMethod();
}

推荐阅读