我刚刚实现了这个类:
class MIXIM_API DSRCmsgID : public cObject
{
public:
/** @brief Constant with all values set to 0. */
static const DSRCmsgID ZERO;
public:
//int msgID;
enum msgID {
DSRCmsgID_reserved = 0,
DSRCmsgID_alaCarteMessage = 1,
DSRCmsgID_DSRCmsgID = 2,
DSRCmsgID_DSRCmsgIDVerbose = 3,
DSRCmsgID_commonSafetyRequest = 4,
DSRCmsgID_emergencyVehicleAlert = 5,
DSRCmsgID_intersectionCollisionAlert = 6,
DSRCmsgID_mapData = 7,
DSRCmsgID_nmeaCorrections = 8,
DSRCmsgID_probeDataManagement = 9,
DSRCmsgID_probeVehicleData = 10,
DSRCmsgID_roadSideAlert = 11,
DSRCmsgID_rtcmCorrections = 12,
DSRCmsgID_signalPhaseAndTimingMessage = 13,
DSRCmsgID_signalRequestMessage = 14,
DSRCmsgID_signalStatusMessage = 15,
DSRCmsgID_travelerInformation = 16
};
private:
void copy(const DSRCmsgID& other) {msgID = other.msgID; }
public:
/** @brief Default constructor. */
DSRCmsgID()
: msgID() {}
/** @brief Initializes a DSRCmsgIDinate. */
DSRCmsgID(enum msgID )
: msgID(msgID) {}
/** @brief Initializes DSRCmsgIDinate from other DSRCmsgIDinate. */
DSRCmsgID(const DSRCmsgID& other)
: cObject(other) { copy(other); }
/** @brief Returns a string with the value of the DSRCmsgIDinate. */
std::string info() const;
};
inline std::ostream& operator<<(std::ostream& os, const DSRCmsgID& DSRCmsgID)
{
return os << "(" << DSRCmsgID.msgID << ")";
}
inline std::string DSRCmsgID::info() const {
std::stringstream os;
os << *this;
return os.str();
}
我收到了这些错误:
错误:在'='标记之前预期的非限定标识 - &gt;在复制功能;
错误:'枚举DSRCmsgID :: msgID'不是'DSRCmsgID'的非静态数据成员 - &gt;在构造函数和初始化器;
错误:无效使用'enum DSRCmsgID :: msgID' - &gt;在返回操作系列。
答案 0 :(得分:8)
msgID
目前被声明为类型,而非变量 - 您只需更改:
enum msgID {
DSRCmsgID_reserved = 0,
// ...
DSRCmsgID_travelerInformation = 16
};
为:
enum {
DSRCmsgID_reserved = 0,
// ...
DSRCmsgID_travelerInformation = 16
} msgID;
但声明类型可能更方便:
enum MsgID { // the type of this enum is `MsgID`
DSRCmsgID_reserved = 0,
// ...
DSRCmsgID_travelerInformation = 16
} msgID; // and we also have an instance variable of this type, `msgID`
然后你也可以修复这个构造函数:
DSRCmsgID(enum msgID )
: msgID(msgID) {}
将成为:
DSRCmsgID(MsgID msgID )
: msgID(msgID) {}