c++ - 存储不同类型的数据c++

标签 c++ types

我正在研究一种模块化数据记录器,它允许记录不同类型的数据。目前我制作了一个 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 可能有一些问题。我没有看过你的完整代码,但请引用:

Questions about vector, union, and pointers in C++

关于c++ - 存储不同类型的数据c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798717/

相关文章:

C++11 std::this_thread - 如何取消 sleep_until ()?

c++ - 在类声明中处理指向成员函数的指针

c++ - 链接具有不兼容依赖项的库

Python,如何创建与随机可迭代相同类型的可迭代

Java:将属性声明为 Java 给定类型或自编写类型(也许带有接口(interface)?)

c++ - 构建TensorFlow r1.14 C++文件时缺少文件 “tensorflow/core/framework/types.pb.h”

c++ - 使用 GCC 在可执行文件中嵌入资源

scala - Scalaz 中的隐式参数

python - 为什么一些 numpy 数据类型是 JSON 可序列化的,而另一些则不是?

c - 在 C 变量定义中输入括号