我想在某个字段中定义一个具有不同变量类型的结构。例如,我定义一个像这样的结构:
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
};
感谢您最好的帮助
答案 0 :(得分:2)
您有几种选择。你可以把它变成一个模板:
{ data: 'order.OrderedWhen' }
但是,如果你想要两个结构是相同的类型,这不是你想要的,因为
template <typename T>
struct sensor {
int index;
T value;
};
和
sensor<int>
是两种不同的类型。
第二个选项(如注释中指出的immibis)只是用两个
创建一个结构sensor<float>
然而,这引入了几乎50%的内存开销,可以通过使用union来避免:
struct sensor {
int index;
int ivalue;
float fvalue;
};
在联合中,始终只有一个字段处于活动状态,并且它不会占用超过必要的内存。