请教一个C++类申明的问题
class A;
class B
{
public:
A *m_a;
void fun()
{
m_a = new A;
};
};
class A
{
};
提示 error C2512: “A”: 没有合适的默认构造函数可用
[解决办法]
m_a = new A;
编译器必须首先知道类是怎么定义的,才可以创建对应指针。
你的前向声明forward declaration使用非法!
考虑把类A的声明放在前面:
class A
{
};
[解决办法]
new A的时候相当于调用A的构造函数,但在这之前A只是前向声明了一下,还没有正式声明,编译器并不知A有什么样的构造函数,所以会报错。
把下面的class A {};移到B的前面就没错了。
如果只是前向声明的情况,你只能用A*或A&。一旦要用到A的对象或者任何函数,编译器都会报错。
[解决办法]
学习,同意楼上看法
[解决办法]
在对类A进行动态分配空间时必须见到定义,因为要知道它的大小才能分配,类的声明只能定义相应指针,因为指针都是占一样的空间大小