首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请问一个C++类申明的有关问题

2012-06-07 
请教一个C++类申明的问题class Aclass B{public:A *m_a void fun() { m_a new A }}class A{}提示

请教一个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进行动态分配空间时必须见到定义,因为要知道它的大小才能分配,类的声明只能定义相应指针,因为指针都是占一样的空间大小

热点排行