C ++如何根据模板类型创建对象向量

时间:2016-08-15 11:22:55

标签: c++ templates vector inner-classes

我有一个模板类C,它应该包含带有E对象的向量。向量中的E对象将存储与模板相同的类型。因此,如果C对象的类型为int,则向量应包含包含int的E对象,如果C具有double,则E应存储double等。代码看起来如此像这样:

template<class T> class C {
public:
    class E {
    private:
        T value;    //if C has type int then the events should store int
        std::string description;
    public:
        Event(std::string desc, T val) {
            this->description = desc;
            this->value = val;
        }
    };
    C();
    virtual ~C();

    bool add_e (std::string description);

private:
    T c_value;
    std::vector<E> c_vector; //this should look somewhat like [E<int>, E<int>, E<int>]
};

这会编译,但当我尝试在C.cpp文件中向c_vector添加元素时,如下所示:

template<class T>
bool C<T>::add_e(std::string description) {
    c_vector.add(E(description, c_value));
}

我收到错误:&#39; class std :: vector&lt; ℃下int&gt; :: E,std :: allocator&lt; ℃下int&gt; :: E&gt; &GT;&#39;没有名为&#39;添加&#39;的成员。到底是怎么回事?如何存储存储与封闭模板类类型C相同类型的E对象?

当我尝试搜索网页时,我只找到有关在矢量中存储不同模板类型的信息,例如使E成为抽象类的派生类,然后将抽象类指针存储在矢量中,但我想要所有的要包含相同类型的元素。

1 个答案:

答案 0 :(得分:0)

使用push_back()

中的std::vector