// A.h 头文件
#pragma once
class A
{
public:
void Action();
};
// B.h 头文件
#pragma once
class A;
class B
{
public:
B(A*);
private:
A *pA; // Ok
//A a; // error, 不知道 A 的类型信息,无法求得 B 对象中 a 的具体大小值
};
在 B 类声明 A的变量a,我查看网上,给出的解释都是,一个需要占个位置,编译器不知道a具体长度,所以不能声明一个a类型的变量,因为无法分配空间。
在编译器,这里没有创建一个 B 的实例,为什么需要知道 要给 a 分配空间??
...全文
3684打赏收藏
c++中类的向前声明
// A.h 头文件 #pragma once class A { public: void Action(); }; // B.h 头文件 #pragma once class A; class B { public: B(A*); private: A *pA; // Ok //A a; // error, 不知道 A 的类型信息,无法求得 B 对象中 a 的具体大小值 }; 在 B 类声明 A的变量a,我查看网上,给出的解释都是,一个需要占个位置,编译器不知道a具体长度,所以不能声明一个a