我正在开发一种模块化的数据记录器,该记录器允许记录不同类型的数据。目前,我创建了一个作为模板的File类。为了声明这样一个类的对象,可以这样做:File<double> f("filename.txt")
或File<float> f("filename.txt")
。我希望能够将用double
或float
声明为模板参数的对象存储在一个向量中。可以做这样的事情吗?我已经尝试过在线使用联合这样的方法:
union typ {
int int_dat;
double double_dat;
float float_dat;
}
并允许我这样声明一个向量:
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,不能在操作
<<
中使用。一个人如何绕过这种错误? 最佳答案
我认为您的工会组织可能存在一些问题。我没有查看您的完整代码,但请参考以下内容:
Questions about vector, union, and pointers in C++
关于c++ - 存储不同类型的数据C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22798717/