首页 文章

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

提问于
浏览
61

给出如下的模板类:

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

有人如何在头文件中声明此类?

2 回答

  • 6

    这是你怎么做的:

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

    请注意,默认值位于前向声明中,而不是实际定义中 .

  • 77

    您只能为模板的第一个声明声明模板的默认参数 . 如果您希望允许用户转发声明类模板,则应提供转发标头 . 如果你想使用默认值转发声明别人的类模板,那你就不走运了!

相关问题