C++ 类声明 类前置声明

参考自:https://www.cnblogs.com/fwycmengsoft/p/4061989.html

关于前置类型声明的注意点:


代码一:

class B;

class A
{
public:
B* aData;
A(B* b) :aData(b) {}
};

class B {};

上述代码能够通过编译。


代码二:

class B;

class A
{
public:
B aData;
A(B b) :aData(b) {}
};

class B {};

上述代码报错。Error List:

C2079 'A::aData' uses undefined class 'B'

C2027 use of undefined type 'B'

C2439 ‘A::aData': member could not be initialized


问题总结:上述两段代码中仅仅相关了一个指针,而编译结果不同。

结论:前置类型声明只能作为指针或者引用,不能定义类的对象,所以也不能调用对象中的方法(包括构造函数)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值