读书人

类中能定义另一个类的对象吗?该怎么处

发布时间: 2012-02-26 20:19:45 作者: rapoo

类中能定义另一个类的对象吗?
class B;
class A
{
B b;
};
class B
{
A a;
};

void main()
{
}
编译器报错。
要怎么改?有多少钟改法?为什么要这么改?

[解决办法]
class B;
class A
{
B* pb; //可以定义指针。因为指针不需要知道类的完整定义
//只需要知道类的声明就可以了,以后你可以在堆中建立这个
//指针指向的对象
};
class B
{
A* pa;
};


[解决办法]
类A需知道各个成员的类型,大小,如果你的类B
此时仍未定义,那么它大小未知,这导致类B的大小未知,这是类A的定义无法完成
指针的话,32位机均为4字节,所以A定义的时候,A对象的大小与B对象大小这个无关,所以A的大小明确可知,当然可以定义
[解决办法]
1:
class B;
class A
{
B *b;
};
class B
{
A *a;
};
[解决办法]
yes

读书人网 >C++

热点推荐