首页 > 解决方案 > 在 C++ 中的模板类中创建向量

问题描述

我正在尝试在模板类中创建一个向量,其中向量的类型取决于我在其中定义它的类的模板。我的代码如下:

template<class T>
class A {
    vector<T*> vec;
    vec.resize(100);
}

当我尝试编译它时,我收到以下错误消息:

error: ‘vec’ does not name a type; did you mean ‘getc’?
     vec.resize(100);
     ^~~

有人可以告诉我如何定义这样的向量吗?

提前致谢。

标签: c++templatesstdvector

解决方案


这与模板无关。这个非模板代码也将是一个错误

class A {
    vector<int*> vec;
    vec.resize(100);
}

因为vec.resize(100)不在函数中。我猜你希望在构造函数中调用该代码,就像这样

class A {
    vector<int*> vec;
    A() {
        vec.resize(100);
    }
}

那是合法的。现在我们可以把那个合法的代码变成一个模板

template <class T>
class A {
    vector<T*> vec;
    A() {
        vec.resize(100);
    }
}

推荐阅读