C++ 在{标记之前应为类名
这是两个头文件。子文件和父文件。有人能解释为什么会发生此错误吗 提前谢谢 SampleApplication.h:C++ 在{标记之前应为类名,c++,inheritance,C++,Inheritance,这是两个头文件。子文件和父文件。有人能解释为什么会发生此错误吗 提前谢谢 SampleApplication.h: #ifndef SAMPLEAPPLICATION_H_ #define SAMPLEAPPLICATION_H_ #include "ns3/CcnModule.h" #include "ns3/CCN_Name.h" #include <string> class CcnModule; class SampleApplication : public ns3:
#ifndef SAMPLEAPPLICATION_H_
#define SAMPLEAPPLICATION_H_
#include "ns3/CcnModule.h"
#include "ns3/CCN_Name.h"
#include <string>
class CcnModule;
class SampleApplication : public ns3::Application
{
public:
ns3::Ptr<CcnModule> ccnm;
static ns3::TypeId GetTypeId(void);
virtual ns3::TypeId GetInstanceTypeId (void) const;
SampleApplication();
SampleApplication(ns3::Ptr<CcnModule> ccnm);
virtual ~SampleApplication();
char* data;
int length;
ns3::Ptr<CCN_Name> dataName;
void SendInterest(ns3::Ptr<CCN_Name> n);
void SendData(ns3::Ptr<CCN_Name> data, char* buff, int bufflen);
virtual void InterestReceived(ns3::Ptr<CCN_Name> ccnn);
virtual void DataArrived(ns3::Ptr<CCN_Name> data, char* buff, int bufflen);
void AnnounceName(ns3::Ptr<CCN_Name> n);
virtual void DoDispose();
virtual void DoInitialize();
};
#endif
#如果NDEF样本应用程序#_
#定义样本应用程序_
#包括“ns3/CcnModule.h”
#包括“ns3/CCN_Name.h”
#包括
类CcnModule;
类SampleApplication:public ns3::Application
{
公众:
ns3::Ptr-ccnm;
静态ns3::TypeId GetTypeId(void);
虚拟ns3::TypeId GetInstanceTypeId(void)常量;
SampleApplication();
样本应用(ns3::Ptr ccnm);
虚拟~SampleApplication();
字符*数据;
整数长度;
ns3::Ptr数据名;
无效利息(ns3::Ptr n);
void SendData(ns3::Ptr data,char*buff,int bufflen);
收到的虚拟无效权益(ns3::Ptr ccnn);
虚拟无效数据到达(ns3::Ptr数据、字符*buff、整数bufflen);
无效名称(ns3::Ptr n);
虚空DoDispose();
虚拟void DoInitialize();
};
#恩迪夫
接收人:h:
#ifndef RECEIVER_H_
#define RECEIVER_H_
#include "ns3/CcnModule.h"
#include "ns3/CCN_Name.h"
#include <string>
#include <vector>
#include "ns3/SampleApplication.h"
class CcnModule;
//class SampleApplication;
class Receiver : SampleApplication
{
public:
static ns3::TypeId GetTypeId(void);
virtual ns3::TypeId GetInstanceTypeId (void) const;
Receiver(ns3::Ptr<CcnModule> ccnm);
virtual ~Receiver();
void SendInterest(ns3::Ptr<CCN_Name> n);
virtual void DataArrived(ns3::Ptr<CCN_Name> data, char* buff, int bufflen);
};
#endif
\ifndef接收机_
#定义接收器_
#包括“ns3/CcnModule.h”
#包括“ns3/CCN_Name.h”
#包括
#包括
#包括“ns3/SampleApplication.h”
类CcnModule;
//类样本应用;
类接收器:SampleApplication
{
公众:
静态ns3::TypeId GetTypeId(void);
虚拟ns3::TypeId GetInstanceTypeId(void)常量;
接收机(ns3::Ptr ccnm);
虚拟接收机();
无效利息(ns3::Ptr n);
虚拟无效数据到达(ns3::Ptr数据、字符*buff、整数bufflen);
};
#恩迪夫
我不熟悉您正在使用的库,但我猜它是NS-3离散事件网络模拟器,粗略地看一下API,我希望看到包括
#include "ns3/application.h"
在SampleApplication.h文件中
很可能它已经被您的实现中的一些其他include拉入,但乍一看它似乎丢失了。此错误发生在哪一行?class Receiver:SampleApplication{在这里,好像SampleApplication不是一个类。这基本上意味着,
SampleApplication
没有被识别为一个类型。这意味着头文件的包含有一些问题。要么你有一个循环依赖项(因此在你使用它的时候它是不可见的)或者它位于嵌套的命名空间中且不可见。您能否将其简化为再现问题的小型可编译示例。如果SampleApplication
不在ns3命名空间中(如下面的注释所述),那么include为什么看起来像这样?#include“ns3/SampleApplication.h”
(请注意此处的ns3)@LokiAstari我对该评论投了赞成票,但同时我想知道,如果缺少ns3/SampleApplication.h
头文件(除非OP将其存储在那里,否则这不是最明智的做法),预处理器怎么会不会吐到该头文件上。OP正向声明CcnModule
,即使上面显示的是正确的ns3/CcnModule.h
头包含,这一事实使我相信问题更为根本。