如何转发声明一个C ++模板类?

给定一个如下所示的模板类:

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 } ... }; 

请注意,默认值在前向声明中,而不在实际定义中。

您只能为模板的第一个声明声明模板的默认参数。 如果你想允许用户转发声明一个类模板,你应该提供一个转发头。 如果你想转发使用默认值声明别人的类模板,你是运气不好!