使用宏从标头调用方法 我在C++中编写了一个基本的反射库,能够登记我的类/字段,如:: addType<Color>() ->addField(Field::createField("r", &Color::r)) ->addField(Field::createField("g", &Color::g)) ->addField(Field::createField("b", &Color::b)) ->addField(Field::createField("a", &Color::a));

使用宏从标头调用方法 我在C++中编写了一个基本的反射库,能够登记我的类/字段,如:: addType<Color>() ->addField(Field::createField("r", &Color::r)) ->addField(Field::createField("g", &Color::g)) ->addField(Field::createField("b", &Color::b)) ->addField(Field::createField("a", &Color::a));,c++,templates,macros,header,C++,Templates,Macros,Header,或者至少在某种程度上类似,但是要做到这一点,我需要在头文件中调用方法(在启动时),这是否可能/在头文件中实现这一点的标准/最佳方法是什么?它会增加最终生成的可执行/动态库的大小吗 非常感谢您的帮助。您的头是否包含在多个翻译单元中?我所有的可反射类/结构头都在许多地方使用(并包含在许多翻译单元中)。通常,头中有一个宏用于“声明”,cpp中有一个宏用于“实现”(使用静态变量初始化来调用函数)。 REGISTER_TYPE(Color); REGISTER_FIELD(r, &Color::r

或者至少在某种程度上类似,但是要做到这一点,我需要在头文件中调用方法(在启动时),这是否可能/在头文件中实现这一点的标准/最佳方法是什么?它会增加最终生成的可执行/动态库的大小吗


非常感谢您的帮助。

您的头是否包含在多个翻译单元中?我所有的可反射类/结构头都在许多地方使用(并包含在许多翻译单元中)。通常,头中有一个宏用于“声明”,cpp中有一个宏用于“实现”(使用静态变量初始化来调用函数)。
REGISTER_TYPE(Color);
REGISTER_FIELD(r, &Color::r);