繁体   English   中英

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

[英]std vector of pointer to template class

我有一个类似的模板类:

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

我想将对象存储在此模板类的STL容器中,例如vector。

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。

您的选择包括:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM