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