我正试图解决这个问题,所以我尝试了一个专门化类模板的尝试:
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
有关如何做的任何想法?谢谢!
答案 0 :(得分:4)
template <int size> class arr<char, size>
此外,您可能希望将尺寸类型更改为unsigned int
或size_t
(假设尺寸不能为负数)。
答案 1 :(得分:0)
您需要将int size
添加到第一个列表中 - 也就是说,编译器没有size
的来源 - 您没有将其声明为模板参数,并且它不是常量。
template<int size> class arr<double, size> { ... }