5

如果我有以下结构:

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

4

1 回答 1

5

您可以将结构专门void化为模板参数,在此实现中您可以省略该成员:

只需在你的结构声明之后添加这个:

template <>
struct packetTXMaintenance <void>
{
   uint8_t start_byte;
   uint8_t byte_count;
   uint8_t address;
   uint8_t command_id;
};

所以当你使用packetTXMaintenance <void> variablethen 变量时不会有成员,这是一个完全不同的实现。

编辑:

如果您希望成员具有不同的类型 T 那么您可以只用不同的类型实例化结构:packetTXMaintenance<int>,在这种情况下temp_parameter将具有类型int

于 2013-11-12T12:15:37.123 回答