给出如下的模板类:
template<typename Type, typename IDType=typename Type::IDType> class Mappings { public: ... Type valueFor(const IDType& id) { // return value } ... };
有人如何在头文件中声明此类?
这是你怎么做的:
template<typename Type, typename IDType=typename Type::IDType> class Mappings; template<typename Type, typename IDType> class Mappings { public: ... Type valueFor(const IDType& id) { // return value } ... };
请注意,默认值位于前向声明中,而不是实际定义中 .
您只能为模板的第一个声明声明模板的默认参数 . 如果您希望允许用户转发声明类模板,则应提供转发标头 . 如果你想使用默认值转发声明别人的类模板,那你就不走运了!
2 回答
这是你怎么做的:
请注意,默认值位于前向声明中,而不是实际定义中 .
您只能为模板的第一个声明声明模板的默认参数 . 如果您希望允许用户转发声明类模板,则应提供转发标头 . 如果你想使用默认值转发声明别人的类模板,那你就不走运了!