#ifndef CLASS_VEHICLE_
#define CLASS_VEHICLE_

#include "ns3/ptr.h"
#include "ns3/object.h"
#include "ns3/vector.h"
#include "ns3/core-module.h"
#include "ns3/network-module.h"
#include "ns3/mobility-module.h"
#include "ns3/config-store-module.h"
#include "ns3/wifi-module.h"
#include "Cluster.h"


namespace ns3
{
class Cluster;

/// define type DeviceTraceCallback
typedef Callback<void, Ptr<Vehicle>, std::string, Ptr<const Packet> > DeviceTraceCallback;  // Line where the error is
/// define type VehicleReceiveCallback.
typedef Callback<void, Ptr<Vehicle>, Ptr<const Packet>, Address> VehicleReceiveCallback;
/// define type PhyRxOkTraceCallback.
typedef Callback<void, Ptr<Vehicle>, std::string, Ptr<const Packet>, double, WifiMode, enum WifiPreamble> PhyRxOkTraceCallback;
/// define type PhyRxErrorTraceCallback.
typedef Callback<void, Ptr<Vehicle>, std::string, Ptr<const Packet>, double> PhyRxErrorTraceCallback;
/// define type PhyTxTraceCallback.
typedef Callback<void, Ptr<Vehicle>, std::string, Ptr<const Packet>, WifiMode, WifiPreamble, uint8_t> PhyTxTraceCallback;
/// define type PhyStateTraceCallback.
typedef Callback<void, Ptr<Vehicle>, std::string, Time, Time, enum WifiPhy::State> PhyStateTraceCallback;

class Vehicle : public ns3::Object
{
  ... code section

 };
};
#endif

我正在ns3上工作,我必须实现一个代码,该代码可以让我对车辆网络进行一些仿真。我有几节课,但只有一堂很烦人。确实,当我进行编译时,我会遇到以下特定错误:



并带来大量其他错误



要么



我真的不明白我做错了什么,所以如果有人可以帮助我,那就太好了!

最佳答案

您尚未向我们显示错误所指向的源代码行,但我假设这是此行:

typedef Callback<void, Ptr<Vehicle>, std::string, Ptr<const Packet> > DeviceTraceCallback;

该行中提到的所有类型和模板是否已在您包含的 header 之一中声明?特别是:
  • 您尚未直接包含<string>。这样做是一个好主意,即使其他头文件之一可能间接包含它也是如此。
  • 您尚未声明Vehicle类型,该类型在此文件的后面定义。您需要一个声明(class Vehicle;中的namespace ns {}),然后才能在此声明中使用它。
  • 关于c++ - 错误: invalid declarator before with typedef,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11885783/

    10-17 02:06