C ++初学者问题!
如果单例类的公共部分中有枚举,那么从单例类外部使用枚举值的正确方法是什么。
class MySingletonClass
{
public:
static MySingletonClass & Singleton();
enum
{
eCodeZero = 0,
eCodeOne = 1
}MsgQueueCodes;
protected:
MySingletonClass ();
~MySingletonClass ();
};
我能够从这个类之外访问这样的枚举值。
MySingletonClass::Singleton().eCodeZero
MySingletonClass::Singleton().eCodeOne
我的问题是,
MySingletonClass::MsgQueueCodes myMsgQCode;
//不正确的语法] 感谢您的时间。
答案 0 :(得分:2)
enum
仅与MySingletonClass
相关,那么在课堂内声明它是好的。那么你必须在定义在类定义之外的函数中使用MySingletonClass::eCodeZero
。enum
,那么最好的方法是在类外部声明它,但是使用命名空间。答案 1 :(得分:1)
代码有效,可能就是您的意图。请注意,MsgQueueCodes
被声明为(未命名)枚举的成员变量。也许你想要:
class MySingletonClass
{
public:
static MySingletonClass & Singleton();
enum MsgQueueCodes
{
eCodeZero = 0,
eCodeOne = 1
};
MsgQueueCodes code;
protected:
MySingletonClass ();
~MySingletonClass ();
};
然后你可以写:
MySingletonClass::MsgQueueCodes code = MySingletonClass::Singleton().eCodeZero;
MySingletonClass::MsgQueueCodes code = MySingletonClass::Singleton().code;
此外,从C ++ 11开始,我们有enum class
,这意味着更好地确定枚举名称的范围。参见例如:
Strongly typed enumerations