-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