我正在开发一种模块化的数据记录器,该记录器允许记录不同类型的数据。目前,我创建了一个作为模板的File类。为了声明这样一个类的对象,可以这样做:File<double> f("filename.txt")File<float> f("filename.txt")。我希望能够将用doublefloat声明为模板参数的对象存储在一个向量中。可以做这样的事情吗?我已经尝试过在线使用联合这样的方法:

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/

10-15 03:50
查看更多