我不想问这样一个笼统的问题,但下面的代码是显式模板专业化的练习。我不断收到错误:
c:\users\***\documents\visual studio 2010\projects\template array\template array\array.h(49): 错误 C2910: 'Array::{ctor}' : 无法显式专门化
#ifndef ARRAY_H
#define ARRAY_H
template <typename t>`
class Array
{
public:
Array(int);
int getSize()
{
return size;
}
void setSize(int s)
{
size = s;
}
void setArray(int place, t value)
{
myArray[place] = value;
}
t getArray(int place)
{
return myArray[place];
}
private:
int size;
t *myArray;
};
template<typename t>
Array<t>::Array(int s=10)
{
setSize(s);
myArray = new t[getSize()];
}
template<>
class Array<float>
{
public:
Array();
};
template<>
Array<float>::Array()
{
cout<<"Error";
}
#endif
Thanks
专业化构造函数的实现不是模板!也就是说,你只想写:
Array<float>::Array()
{
std::cout << "Error";
}
实际上,您似乎想限制“Array”类模板的使用,使其不与“float”一起使用,在这种情况下您可能只想declare但不是define您专门将运行时错误转换为编译时错误:
template <> class Array<float>;
当然,防止类实例化的方法有很多种。然而,创建运行时错误似乎是最糟糕的选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)