我有一个模板类C,它应该包含一个具有E对象的向量。vector中的E对象将存储与模板相同的类型。所以如果C对象是int
类型的,向量应该包含E个包含int
的对象,如果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));
}
我得到错误:'class std::vector
当我尝试搜索web时,我只找到关于在vector中存储不同模板类型的信息,例如使E成为抽象类的派生类,然后将抽象类指针存储在vector中,但我希望所有元素都包含相同的类型。
使用push_back()
from std::vector