指向模板类的指针的std向量

时间:2013-07-10 08:03:38

标签: c++ templates

我有一个类似的模板类:

template <class TYPE>
class Temp {
public:
    Temp(TYPE _val) : var(_val){};
    TYPE var;
};

我想将对象存储在STL容器中的这个模板类中。

void print(vector<Temp<TYPE> *> & _vec) {
    for(unsigned short i = 0; i < _vec.size() ; i++)
       cout << " Value of stored variable is : " << (*_vec[i]).var << endl;
}

int main(int argc, char* argv[]) {
    vector<Temp<TYPE> *> cont;
    Temp<int> t1(20);
    Temp<float> t2(1.4);
    cont.push_back(&t1);
    cont.push_back(&t2);
    return 0;        
}

我知道在没有定义类型的情况下我们无法分配stl容器。 有办法完成这项工作吗?我不能使用boost.variant。

1 个答案:

答案 0 :(得分:0)

您的选择包括:

  • Temp提供一个公共基类(使用虚拟析构函数)的不同实例,然后在vector中存储指向基类型的指针。然后,您可以使用dynamic_cast<>检查存储对象的运行时类型,或者可以在派生的实例化中添加一些类型指示虚拟函数。

  • 编写自己的区分联合类,其中枚举或int跟踪存储的当前类型(如果有固定的集合)。