我正在研究一种模块化数据记录器,它允许记录不同类型的数据。目前我制作了一个 File 类,它是一个模板。为了声明此类的对象,可以这样做:File<double> f("filename.txt")
或 File<float> f("filename.txt")
.我希望能够存储用 double
声明的对象或 float
作为一个 vector 中的模板参数。有可能做那样的事情吗?我在网上尝试了一种使用 union 的方法:
union typ {
int int_dat;
double double_dat;
float float_dat;
}
并允许我这样声明一个 vector :vector<File<typ> >
.但是,这给了我链接器错误。有没有更简单、更清洁的方法来尝试这个?有问题的整个项目是here
编辑:跟进这个。如果我进行此类操作,将如何规避围绕这一事实的问题:
std::vector<File<typ> > files;
File<typ> f("test.txt");
files.push_back(f);
files.at(0) << 35.4;
它会导致编译时错误,据我所知,我猜是:35.4 不是 typ 类型,不能在操作 <<
中使用.如何绕过这样的错误?
最佳答案
我认为您的 union vector 可能有一些问题。我没有看过你的完整代码,但请引用:
关于c++ - 存储不同类型的数据c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798717/