class B;
class A
{
public:
    string name;
    B* box;
};

class B
{
public:
    string name;
    A appple;
};


int main()
{
  A theobjectA;
  theobjectA.name  = "lalal";
  B* bbb = new B;
  theobjectA.box = bbb;
  bbb->name = "asasasdd";

  cout<<theobjectA.name<<*(theobjectA.box);
}


我想知道为什么我不能访问类A中的box值?不允许取消对指针的引用。此外,我无法理解如何使用这种相互递归的类。

最佳答案

您正在访问它。程序失败,因为您试图将class B类型的对象发送到对象operator <<cout。自然,一般operator <<不知道如何处理此类输入。如果要打印对象的名称成员,则应将其发送到operator <<而不是整个对象:theobjectA.box->name

编辑:感谢@AlgirdasPreidžius注意到拼写错误。

08-24 15:29