定义动态结构

时间:2016-07-12 17:01:34

标签: c++ dynamic struct definition

我想在某个字段中定义一个具有不同变量类型的结构。例如,我定义一个像这样的结构:

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
};

感谢您最好的帮助

1 个答案:

答案 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;
};

在联合中,始终只有一个字段处于活动状态,并且它不会占用超过必要的内存。