Tom*_*Tom 5 c++ templates struct
如果我有以下结构:
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;
};
Run Code Online (Sandbox Code Playgroud)
例如,我可以像这样实例化结构:
packetTXMaintenance<data1> value;
Run Code Online (Sandbox Code Playgroud)
但是可以在没有template temp_parameter
?的情况下实例化结构.(在某些情况下,我想要没有temp_parameter成员的结构,在其他情况下我需要具有不同类型的temp_parameter成员T
)
您可以将struct专门void
化为模板参数,在此实现中,您可以省略该成员:
只需在结构声明后添加:
template <>
struct packetTXMaintenance <void>
{
uint8_t start_byte;
uint8_t byte_count;
uint8_t address;
uint8_t command_id;
};
Run Code Online (Sandbox Code Playgroud)
所以当你使用packetTXMaintenance <void> variable
那么变量将没有成员时,它是一个完全不同的实现.
编辑:
如果您希望该成员使用不同的类型T,那么您可以使用不同的类型实例化该结构:packetTXMaintenance<int>
在这种情况下temp_parameter
将具有该类型int
.