如果我有以下结构:
struct data1{
uint8_t data;
}
template <class T>
struct packetTXMaintenance{
uint8_t start_byte;
uint8_t byte_count;
uint8_t address;
T temp_parameter;
uint8_t command_id;
};
例如,我可以像这样实例化结构:
packetTXMaintenance<data1> value;
但是可以在没有template temp_parameter
的情况下实例化结构体? (在某些情况下,我想要没有temp_parameter成员的结构,在其他情况下,temp_parameter成员具有不同类型T
)
答案 0 :(得分:5)
您可以将void
的结构专门化为模板参数,在此实现中,您可以省略该成员:
只需在结构声明后添加:
template <>
struct packetTXMaintenance <void>
{
uint8_t start_byte;
uint8_t byte_count;
uint8_t address;
uint8_t command_id;
};
所以当你使用packetTXMaintenance <void> variable
时,变量将没有成员,这是一个完全不同的实现。
编辑:
如果您希望该成员使用不同类型的T,那么您可以使用不同类型实例化该结构:packetTXMaintenance<int>
,在这种情况下temp_parameter
将具有类型int