-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成爲抽象類的派生類,然後將向量中存儲抽象類指針,但是我希望要包含相同類型的元素。
你需要閱讀更多有關['標準:: VECTOR'(http://en.cppreference.com/w/cpp/container/vector)。它從來沒有任何「添加」功能。 –
push_back()怎麼樣? – burakozgul
謝謝!太習慣了Java ...我改成了push_back,現在它完美地工作 – JayW