定义其他类中的对象

Define object from other classes

本文关键字:对象 其他 定义      更新时间:2023-10-16

我无法从顶级下的其他类中定义对象示例:

class B; 
class a
{
public:     
    a(){ cout << "an"; }
    ~a(){ cout << "~an"; }
private:
B ob;
};
class B
{
public:
    B(){ cout << "Bn"; }
    ~B(){ cout << "~Bn"; }
    a ob;
};
int main()
{
    B r;
    system("pause");
}

我不能在类a中生成对象的问题即使我在上面写(class B;(

您的问题可以通过将B对象指针传递到a构造函数来解决。如果将B类更改为包含指向a指针,则可以解决递归问题。实际上,您正在创建一个无限循环,方法是创建一个包含对象a的对象B,然后创建一个对象B,依此类推

class B
{
public:
    B(a* _ob) : ob(_ob) { cout << "Bn"; }
    ~B(){ cout << "~Bn"; }
    a* ob;
};
int main()
{
    a _a;
    B r(_a);
    system("pause");
}

您的类是递归定义的。

你的行动成员不是参考,而是真实的对象。所以每个a都包含一个B,它包含一个包含aB,它包含。。。

这个循环永远不会结束,所以没有办法创建B对象。