• 注册
欢迎加入behaviac Q&A网站。behaviac是腾讯开源组件https://github.com/TencentOpen/behaviac 官方网站:http://www.behaviac.com/,提供各种文档和教程及手册 为了您及时的获得您最新问题的评论或者回答,请提供并验证您的邮箱

C++枚举类型赋值语句中,是赋值成字符串吗?

0 喜欢 0 不喜欢
71 浏览

<!--StartFragment -->弱弱问一句,枚举赋值语句中,是赋值成字符串吗?

 

image

<!--StartFragment -->

我可以这样赋值吗:behaviac::string = eColor.RED

最新提问 6月 12, 2016 用户: quinnpan (12,640 分)
修改于 8月 3, 2016 用户:jonygli

1个回答

0 喜欢 0 不喜欢

DEFINE_ENUM_VALUE(),第一个参数是enum类型的成员,第二个参数是这个成员显示在编辑器中的名称。DISPLAY_INFO用来添加对这个成员更详细的描述。

 

imageimage

上图可以说明这段代码的具体使用后再编辑器的展现情况。

相关代码:

#define DEFINE_ENUM_VALUE(value, name)	_defineEnumName(enumClassDesc, value, #value, name)

//deparated, to use ENUMCLASS_DISPLAY_INFO
#define ENUMCLASS_DISPLAYNAME(displayName_)    enumClassDesc.m_displayName = displayName_;
#define ENUMCLASS_DESC(desc_)    enumClassDesc.m_desc = desc_;

#define ENUMCLASS_DISPLAY_INFO(displayName_, desc_)		\
    enumClassDesc.m_displayName = displayName_;			\
    if (desc_) {enumClassDesc.m_desc = desc_;}			\
    else {enumClassDesc.m_desc = displayName_;}

inline EnumValueItem_t& _defineEnumName(EnumClassDescription_t& ecd, uint32_t value, const char* nativeName, const char* name)
{
    EnumValueItem_t& e = ecd.valueMaps[value];
    e.nativeName = nativeName;
    e.name = name;

    return e;
}

#define DEFINE_ENUM_VALUE(value, name)	_defineEnumName(enumClassDesc, value, #value, name)

#define END_ENUM_DESCRIPTION()         }

现在情况就明了了,所以    DEFINE_ENUM_VALUE(TNS::NE::NAT::RED, "RED").DISPLAY_INFO(L"红色 Red", L"Red 是一种非常激进的色彩"); 并不是赋值语句,所以对它的赋值应该是相同类型下普通的赋值操作。

最新回答 6月 12, 2016 用户: quinnpan (12,640 分)
...