2016-08-15 51 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

回答

相關問題