定义一个函数来返回C ++枚举定义的成员,作为预处理器宏的一部分?

时间:2014-12-01 02:57:20

标签: c++ enumeration boost-preprocessor

给定枚举定义为:

DEFINE_ENUM(name,enumerators)  \
enum name                                                              \
{                                                                      \
    BOOST_PP_SEQ_ENUM(enumerators)                                     \
}; 

如何定义一个函数,该函数将被定义为DEFINE_ENUM()宏的一部分并返回包含枚举所有成员的向量?

在上面的宏观定义的末尾添加了以下内容,与我到目前为止一样接近:

std::vector<name> MembersOf(name AnyItem) {     \
    return {BOOST_PP_SEQ_ENUM(enumerators)}; \
};

这是报告无效终止的宏定义,并声称如果包含它的文件包含在多个文件中,则每个DEFINE_ENUM()的MembersOf()都会被多次定义。

0 个答案:

没有答案