C++ 模板类T
如果我有C++ 模板类T,c++,template-classes,C++,Template Classes,如果我有 template<class T> class Vector public: Vector(const Vector& bla); )); //下面是同一个.h文件中但在类之外的代码 Vector(); Vector(int size, T value = T()) {} Vector(const Vector& vec){} ~Vector(){} T at(int index
template<class T> class Vector
public:
Vector(const Vector& bla);
));
//下面是同一个.h文件中但在类之外的代码
Vector();
Vector(int size, T value = T())
{}
Vector(const Vector& vec){}
~Vector(){}
T at(int index) const{}
void set_value_at(int index, T elem) const{}
如果您试图实现
Vector()
,您可以这样做:
template<class T> Vector<T>::Vector(const Vector<T>& bla)
{
...
}
Vector<SomeTypeHere> vec1;
Vector<SomeTypeHere> vec2(vec1);
如果一切都做对了,
vectorv(args)
应该自动调用类似构造函数的函数。要使用其他功能,请执行以下操作:
v.myFunc();
Vector<type>::mystaticfunc();
静态功能:
v.myFunc();
Vector<type>::mystaticfunc();
Vector::mystaticfunc();
请讲清楚一点。显示整个.h
文件,以及您尝试使用它的位置/方式。如果我在此函数中使用它:templateVector::Vector(int size,T value=T()),我会得到以下错误:错误:为“Vector::Vector(int,T)”的参数2指定的默认参数默认参数值只能在声明中指定,不能在实现中指定,例如:模板向量{public:Vector(int-size,T-value=T());}代码>模板向量::向量(int-size,T-value){…}
,除非它们是内联在一起的(这在使用模板时最常见),例如:模板向量{public:Vector(int-size,T-value=T()){…}代码>