命名空间与前向声明的正确使用reference to 'CSon' is ambiguous(模糊的)

1.


 CDinPlanResult::CDinPlanResult(CDinCmdPtr Ptr)
 ^

 

comm.h

using namespace 

{

 class CSon;

struct sonCmdPlanResult

{

CSon *ptrSon;

}

}

 

father.h

#include "comm.h"

class CCmdLookAheadPlannerResult
{

};

 

son.h

class  CSon :public CFather

{

};

 

则编译时会报错:

error: reference to 'CSon' is ambiguous(模糊的)

原因与编译顺序有关,

如果先编译comm.h

发现前向声明在namespace里面,则认为Class Cson是命名空间的一个类,

然后等编译son.h时又发现一个Cson 类,则编译器认为两者重名,不知道该用哪个了,模糊了

解决办法:

将comm.h

中对CSon的前向声明挪到namespce之外

comm.h

 class CSon;

using namespace 

{

 

struct sonCmdPlanResult

{

CSon *ptrSon;

}

}

即可解决。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值