是否可以使用宏构建下面的类?
struct ModelName
{
public:
typedef std::string type;
static type get( const GameObject* obj )
{
return obj->getAttribute< type >( MODEL_NAME );
}
};
换句话说,我想在编译时根据以下三个参数生成上述代码:ModelName
,MODEL_NAME
和std::string
。这可能吗?
编辑:输入后,我意识到我可以使用模板实现我想要的功能。出于某种原因,我认为它不会起作用。谢谢!
答案 0 :(得分:4)
不确定
#define DEFINE_ATTRIBUTE(classname, attributeName, attributeType) \
struct classname \
{ \
typedef attributeType type; \
\
static type get(const GameObject* const obj) \
{ \
return obj->getAttribute<type>(attributeName); \
} \
}
(丢失的分号是正常的;它强制/允许在宏之后使用分号。)
如果可能,您可以考虑将其重新设计为模板。