C++/NS3关于一个类用到另一个类所定义的的结构体类型

在NS3编程中,遇到ManetAdjManager类与ManetMACCtrl类相互引用结构体类型导致编译错误的问题。通过将结构体定义移到独立头文件避免相互包含,从而解决了这个问题。本文记录这一问题及其解决方案。
摘要由CSDN通过智能技术生成

最近在写NS3,遇到一个问题就是例如ManetAdjManager.h有一个类叫ManetAdjManager的类,定义了 以下结构体类型

typedef struct  TopologyNode{
        uint8_t source;
        uint8_t dest;
        uint8_t SigParamvalue;
    }TopologyNodestruct;

    typedef struct TopologyTable {
        uint8_t localaddr ;
        std::vector<TopologyNodestruct> mTopologyTable ;
    }TopologyTablestruct;

然后下一层ManetMACCtrl.h,里也有一个类ManetMACCtrl,由于两层间要进行数据交互,所以都会用到ManetAdjManager类所定义的结构体类型。

现在的情况是ManetMACCtrl.h里会用到ManetAdjManager.h里类所定义的结构体类型,所以ManetMACCtrl.h就会包含ManetAdjManager.h;在ManetMACCtrl.h里面这样定义

ManetAdjManager::TopologyNodestruct  m_ TopologyNode;

这样是没问题的。

但是ManetAdjManager.h是要把数据往ManetMACCtrl.h的某接口传,于是ManetAdjManager.h就会把ManetMACCtrl.h给include进来,于是编译就炸了,出现各种类型定义找不到的错误,郁闷了很久。

最后发现原来是出现了相互include相互引用的情况,我不知道为什么相互包含不行,C++没学到位,后面我就在另外单独写一个类,这个类专门写这写类型定义在这里面,然后就不会出现上面的情况了!

我把遇到的问题和解决办法整理出来,给自己做个笔记。

上面的问题是为什么我还得去查查C++或者C语言的书。如果有知道更具体的细节,欢迎交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值