在传递类 A 的类实例的 this 指针时遇到了一些麻烦。这里的目标是让类 B 能够访问类 A 实例 objA 的成员。
class B
{
public:
B(A _objA)
: objA(_objA) {;}
A objA;
};
class A
{
public:
A() : objB(*this) {;}
B objB;
};
int main() {
A Object;
}
编译这个给出 错误 C2061:语法错误:标识符“A”
尝试关注 Pass 'this' object to an initialization list供引用没有运气。会不会只是链接问题?
最佳答案
那是行不通的。 A
包含 B
的实例,B
包含 A
的实例。无法构造任何一种类型的对象,因为它们是递归定义的。
另一个问题是您从A
的构造函数的初始化列表中按值传递*this
。这将调用 A
的复制构造函数,这将导致未定义的行为,因为 A
的实例尚未完全构建。
关于c++ - 在初始化期间使用 *this 将对象的实例传递给成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25102016/