0

给定一个定义为的枚举:

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() 都是多重定义的。

4

0 回答 0