在单例类中声明和访问枚举- c++
Declaring and accessing an enum in a singleton class- C++
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;
//不正确的语法]
感谢您的宝贵时间。
- 如果你的
enum
只与MySingletonClass
相关,那么在类中声明它是好的。那么你必须在类定义之外定义的函数中使用MySingletonClass::eCodeZero
。 - 如果你同样的
enum
在其他类中使用,那么最好的方法是在类外声明它,但在命名空间内。
代码是有效的,并且可能是您想要的。注意,MsgQueueCodes
被声明为(未命名的)enum的成员变量。也许你想:
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
,这意味着枚举名称有了更好的作用域。例如:强类型枚举
相关文章:
- 不带大括号的枚举形式
- 枚举环境变量的惯用C++14/C++17方法
- 类似枚举的计算常量
- 如何正确实现和访问运算符的各种自定义枚举器
- 错误:从"int"到枚举c++的转换无效
- C++中构造函数中的枚举
- 访问在 C++ 结构中声明的枚举变量
- 枚举类'classname'的多重定义
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- typedef 枚举和枚举类有什么区别?
- 为什么我的开关/机箱在使用枚举时默认?
- 标准::可选枚举的比较运算符
- C++两个源文件之间共享的枚举的静态实例
- 打印没有铸件的枚举可以在C++中吗?
- 枚举成员与静态 int 成员?
- C++:枚举:错误:应使用标识符而不是"}"
- 带有 c++ 的枚举(输入检查)
- 在 qml 中使用 Q_ENUM 和 Q_PROPERTY 作为枚举类
- 为什么 int 类型的枚举类值不能用作 int
- 在 C++ 中输出枚举类类型的向量元素