如何推进声明C ++模板类?(How to forward declare a C++ templa

2019-07-05 02:37发布

给定一个模板类,如下列:

template<typename Type, typename IDType=typename Type::IDType>
class Mappings
{
public:
    ...
    Type valueFor(const IDType& id) { // return value }
    ...
};

一个人怎么能向前声明这个类在头文件?

Answer 1:

这是你会怎么做:

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

请注意,默认是向前声明,而不是实际的定义。



Answer 2:

您可以只为模板的第一个声明模板声明默认参数。 如果您希望允许用户转发声明一个类模板,你应该提供一个转发头部。 如果你要转发使用默认值申报别人的类模板,你的运气了!



文章来源: How to forward declare a C++ template class?