2016-08-15 32 views
-4

我有一个模板类C,它应该包含一个向量与E对象。矢量中的E对象将存储与模板相同的类型。因此,如果C对象是int类型的载体应包含包含int,如果C有double那么E应该存储double等的代码看起来像这款E对象:C++如何根据模板类型有一个对象的向量

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)); 
} 

我得到的错误:“类的std ::矢量<ç< INT> :: E,性病::分配器<ç< int> :: E >>>'没有名为'add'的成员。到底是怎么回事?我如何才能完成存储与封闭模板类类型C相同类型的E对象?

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

+4

你需要阅读更多有关['标准:: VECTOR'(http://en.cppreference.com/w/cpp/container/vector)。它从来没有任何“添加”功能。 –

+1

push_back()怎么样? – burakozgul

+0

谢谢!太习惯了Java ...我改成了push_back,现在它完美地工作 – JayW

回答

相关问题