gpt4 book ai didi

c++ - 您将如何从嵌套类的方法中获取基类的 "this"指针?

转载 作者:行者123 更新时间:2023-12-02 09:50:27 25 4
gpt4 key购买 nike

我有一个嵌套在基类中的类,如下所示:

class Base {
public:
void methodB() { std::cout << "method B"; }
class Nested {
public:
void methodA() { methodB(); }
};
Nested * member;
};

这显然会产生编译器错误:
Cannot call member function methodB without object

因为 methodB未声明为静态。这在 main 中是可以的,因为 methodB 将通过执行 instanceOfBase.member->methodA() 被调用,这将依次调用methodB,但我遇到的问题是我不知道如何访问底层 this指向 instanceOfBase 的指针从其成员对象。

最佳答案

嵌套类的对象并没有内在地链接到它的定义嵌套在其中的类的对象。考虑这样的事情:

Base::Nested{}.methodA()

什么 Base对象会操作吗?

如果你有一些不变的对象 Nested总是包含在 Base 中对象,那么您必须维护该链接。例如,您可以通过您的 Base对象的 this指向 Nested 的指针 Base 中的对象构造函数的构造函数:
class Base {
public:
class Nested {
public:
Nested(Base* owner) : owner{owner} {}
void methodA() { owner->methodB(); }
Base* owner;
};

Base() : member{this} {}
void methodB() { std::cout << "method B"; }

Nested member;
};

Live Demo

关于c++ - 您将如何从嵌套类的方法中获取基类的 "this"指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60086538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com