从其他类定义对象

时间:2014-05-16 14:41:07

标签: c++

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

class B; 
class a
{
public:     
    a(){ cout << "a\n"; }
    ~a(){ cout << "~a\n"; }
private:
B ob;
};

class B
{
public:
    B(){ cout << "B\n"; }
    ~B(){ cout << "~B\n"; }
    a ob;
};

int main()
{
    B r;

    system("pause");

}

我无法在课堂上制作对象的问题 即使我在上面写(B级;)

2 个答案:

答案 0 :(得分:1)

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

class B
{
public:
    B(a* _ob) : ob(_ob) { cout << "B\n"; }
    ~B(){ cout << "~B\n"; }
    a* ob;
};

int main()
{
    a _a;
    B r(_a);

    system("pause");

}

答案 1 :(得分:0)

您的课程是递归定义的。

你的op成员不是引用,而是真正的对象。因此,每个a都包含B,其中包含a,其中包含B,其中包含...

这个循环永远不会结束,因此无法创建B对象。