C++ 定义动态结构

C++ 定义动态结构,c++,dynamic,struct,definition,C++,Dynamic,Struct,Definition,我想在某个字段中定义一个具有不同变量类型的结构。例如,我定义了如下结构: struct sensor { int index; int value; }; struct sensor2 { int index; float value; }; 我只想声明一个带有两个选项的结构,一个是整数值,另一个是时间浮点值,但它是唯一的结构。 我的问题是: 1.无论如何,都要声明一个结构并传递参数来选择一种类型(int或float或…?)? 2.出于这个原因,我可以使用模板吗 struc

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

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;
};
但是,这引入了几乎50%的内存开销,可以通过使用联合来避免:

union intOrFloat {
    int ivalue;
    float fvalue;
};

struct sensor {
    int index;
    intOrFlaot value;
};  

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

bool是浮点数;int_值;浮点数?可以在
结构中使用匿名
联合
结构传感器{int index;联合{int v;float t t;}
因为
联合
只能包含一个数据成员,并且只使用足够的内存来存储其最大的成员。这允许您在特定情况下在两者之间进行选择,而无需求助于模板。如果这足够了,我将把它移到一个答案。有没有办法用固定长度声明模板?例如,如果我的变量是float set 4字节长度,而uint8_t何时为数据设置1字节和3字节的可用空间?我想在相同的内存大小中设置所有结构变量!
sensor<float>
struct sensor {
    int index;
    int ivalue;
    float fvalue;
};
union intOrFloat {
    int ivalue;
    float fvalue;
};

struct sensor {
    int index;
    intOrFlaot value;
};