数据成员'vec'不能是成员模板

use*_*108 9 c++ templates vector

我在标题中有以下两行,以声明包含模板的向量:

template <class t>
    std::vector <t> vec;
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:数据成员'vec'不能是成员模板我做错了什么?编辑:我不知道我被理解正确,我试图声明一个包含模板的向量,我知道这可以完成,因为可以有以下内容:

template <class T>
void funct(vector <T> v){


}
Run Code Online (Sandbox Code Playgroud)

这个函数采用模板的向量作为它的参数,我希望做同样的事情,除了在标题中声明向量以允许向量包含任何东西.

Snp*_*nps 6

template <>当语句仅用于声明一个函数模板类模板.例如,您可以在声明(和定义)类时使用它:

template <typename T>
class TemplateClass {
    /* definition */
};
Run Code Online (Sandbox Code Playgroud)

或功能:

template <typename T>
void templateFunc(T value) {
    /* definition */
}
Run Code Online (Sandbox Code Playgroud)

创建类的实例时,不能使用该template <>语句.而是指定一个模板参数,如下所示:

TemplateClass<int> tc;
Run Code Online (Sandbox Code Playgroud)

并且在调用模板函数时:

int i = 1;
templateFunc(i); // <-- Automatic template deduction to int.
Run Code Online (Sandbox Code Playgroud)


lul*_*yon -1

Vector总是需要一个类T作为模板。但模板应该放在类声明之前。

你可能的意思是

template<class T> 
class A {
private:
std::vector<T> vec;
};
Run Code Online (Sandbox Code Playgroud)