获得;字段的类型不完整“;即使在添加前向引用之后 我仍然在学习C++,并尝试着如何让两个C++类存储实例变量。我意识到你必须添加一个前向引用来做这件事,但我想我肯定还是遗漏了一些东西 class B; class A { public: B b; }; class B { public: A a; };

获得;字段的类型不完整“;即使在添加前向引用之后 我仍然在学习C++,并尝试着如何让两个C++类存储实例变量。我意识到你必须添加一个前向引用来做这件事,但我想我肯定还是遗漏了一些东西 class B; class A { public: B b; }; class B { public: A a; };,c++,C++,试图编译此文件时会出现以下错误: temp.cpp:5:5: error: field 'b' has incomplete type B b; ^ 使用类型作为成员时,类型必须完整。在你的例子中,你想要在彼此内部使用B,A,这是不可能的 但您可以使用指针来解决此问题: class B; class A { public: B* b; // now b is a pointer which points to B type, incomplete type B is O

试图编译此文件时会出现以下错误:

temp.cpp:5:5: error: field 'b' has incomplete type
   B b;
     ^

使用类型作为成员时,类型必须完整。在你的例子中,你想要在彼此内部使用B,A,这是不可能的

但您可以使用指针来解决此问题:

class B;

class A {
public:
  B* b;  // now b is a pointer which points to B type, incomplete type B is OK
};
§3.9.5类型

已声明但未定义的类,或大小未知或元素类型不完整的数组,属于未完全定义的对象类型。43未完全定义的对象类型和无效类型属于未完全定义的类型(3.9.1)不应将对象定义为具有不完整类型。


你不能这样做。这是一个无限递归:A的实例必须包含B的实例(不是指针!),B的实例必须包含A的实例