我想在某个字段中定义一个具有不同变量类型的结构。例如我定义了这样一个结构:
struct sensor {
int index;
int value;
};
struct sensor2 {
int index;
float value;
};
我只想声明一个具有两个选项的结构,一个是整数值,另一个是时间浮点值,但采用独特的结构。 我的问题是: 1.无论如何声明一个结构并传递参数以选择一种类型(int或float或...)? 2. 我可以为此使用模板吗?
struct sensor {
int index;
type_as_option value; //int or float
};
非常感谢你的帮助
最佳答案
您有多种选择。您可以将其设为模板:
template <typename T>
struct sensor {
int index;
T value;
};
但是,如果您希望这两个结构是同一类型,这不是您要找的,因为
sensor<int>
和
sensor<float>
是两种不同的类型。
第二个选项是(正如 immibis 在评论中指出的那样)简单地制作一个包含两者的结构
struct sensor {
int index;
int ivalue;
float fvalue;
};
但是,这会引入将近 50% 的内存开销,而使用 union 可以避免这些开销:
union intOrFloat {
int ivalue;
float fvalue;
};
struct sensor {
int index;
intOrFlaot value;
};
union 总是只有一个字段是事件的,并且它不会使用比必要更多的内存。
关于c++ - 定义动态结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38335012/