部分类模板专业化,c ++

时间:2011-09-24 14:52:38

标签: c++ templates

我正试图解决这个问题,所以我尝试了一个专门化类模板的尝试:

template <class T, int size> class arr{
public:
    arr(T* in):_in(in){};
    void print()
    {
        for (int i = 0; i < size; i++)
        {
            cout << _in[i];
        }
        cout << endl;
    }
private:
    T* _in;
};

我想为arr<char>创建一个特殊模板。在我添加int size作为类型参数之前,它很容易,而且类声明是template<> class arr<double>

现在我有template <> class arr<double,size>这会导致此错误:

template argument 2 is invalid

有关如何做的任何想法?谢谢!

2 个答案:

答案 0 :(得分:4)

template <int size> class arr<char, size>

此外,您可能希望将尺寸类型更改为unsigned intsize_t(假设尺寸不能为负数)。

答案 1 :(得分:0)

您需要将int size添加到第一个列表中 - 也就是说,编译器没有size的来源 - 您没有将其声明为模板参数,并且它不是常量。

template<int size> class arr<double, size> { ... }