小编Ten*_*czS的帖子

将枚举类变量名解析为字符串

考虑一下,我有以下enum课程:

enum class TestEnum
{
   None = 0,
   Foo,
   Bar
};
Run Code Online (Sandbox Code Playgroud)

我想指定ostream operator ( << )这个enum类,所以我可以写:

std::cout << "This is " << TestEnum::Foo;
Run Code Online (Sandbox Code Playgroud)

并得到以下输出This is Foo

我的问题是:
是否有存储枚举“名称说明符”的地方?(即对于enum class TestEnum 来说,它是None,FooBar所以我可以编写一个函数(或最多是函数模板)来指定ostream运算符,如下所示TestEnum

std::ostream& operator<< ( std::ostream& os, TestEnum aEnum ) {
   return std::string( aEnum.name() );
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我是这样做的:

std::ostream& operator<< ( std::ostream& os, TestEnum aEnum ) {
   switch( aEnum ) …
Run Code Online (Sandbox Code Playgroud)

c++ reflection enums c++11 c++17

8
推荐指数
2
解决办法
969
查看次数

标签 统计

c++ ×1

c++11 ×1

c++17 ×1

enums ×1

reflection ×1