我有一个带有默认模板参数的模板类。我得到&#34; 默认模板参数可能不在函数模板中使用&#34;编译此代码时MyClass<T, n>::empty()
定义的错误。我正在编译gcc版本4.2.4(ubuntu 10)上的代码:
template<typename T, int n=10>
class MyClass{
T Val[n];
int Capacity;
int Size;
public:
MyClass():Capacity(n), Size(0) {}
bool empty();
};
template<typename T, int n=10>
bool MyClass<T, n>::empty() {
return Size?false:true;
}
答案 0 :(得分:1)
假设问题是如何编译代码,您可以从empty()
实现的模板参数列表中删除默认值:
template<typename T, int n>
bool MyClass<T, n>::empty() {
return Size ? false : true;
}
请注意,需要在empty()
实例中调用MyClass<T>
的代码才能访问实现。它无法在实现文件中编译。