gpt4 book ai didi

c++ - 在 C++ 代码中使用枚举类型时出错

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:13 25 4
gpt4 key购买 nike

我刚刚实现了这个类:

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();
}

我遇到了这些错误:

  • 错误:在“=”标记之前需要不合格的 ID -> 在复制函数中;

  • 错误:“enum DSRCmsgID::msgID”不是“DSRCmsgID”的非静态数据成员 -> 在构造函数和初始化程序中;

  • 错误:在返回 os 行无效使用“enum DSRCmsgID::msgID”->。

最佳答案

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) {}

关于c++ - 在 C++ 代码中使用枚举类型时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40928451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com