一个应用程序需要处理一组可以执行某些操作的数据集。每个数据集都包含一个特定数据类型(int32、int16、float、complex)的点数组,并且可以对每个数据集中包含的数据执行相同的操作。例如傅立叶变换或滤波器。因此,在数据模型(用于模型- View - Controller 模式)中,我想存储开放数据集的集合,每个数据集都有自己的数据类型。
正在关注 How to put different template types into one vector , 要放置具有不同类型参数的模板类,可以使用继承或提升变体。
我想避免使用变体,我想保留值类型。
我想要的是存储具有不同模板参数的类的 vector (如果可能的话,数组会更好):
template < typename T >
class DataSet {
private:
T data;
// ...
public:
T getData() {return data;}
};
std::vector< DataSet< something > > v;
v.push_back( DataSet<int32_t*>() );
v.push_back( DataSet<float*>() );
v.push_back( DataSet<int16_t*>() );
执行此操作的正确方法是什么?或者处理一组具有不同值类型的对象,我可以在这些对象上执行相同的操作?
最佳答案
如果有固定范围,可以使用boost::variant
,否则考虑boost::any
。
关于具有不同值类型模板参数的模板类的 C++ 数组或 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25034400/