//我有一个结构
typedef struct
{
uint8_t* data;
uint16_t data_ln;
} Struc_Data;
//来自此结构的派生类型
Struc_Data tx_struct;
//我必须在构造函数初始化列表中初始化这个'tx_struct',我没有得到如何
Constr::Constr( ):
tx_struct (reinterpret_cast<uint8_t*>(nullptr), 0U) //this does not work
{
}
答案 0 :(得分:2)
Struc_Data
是一个聚合,所以如果你想对成员进行零初始化,那么值初始化就可以了:
Constr::Constr( ): tx_struct() {} // or tx_struct{}
否则,使用花括号初始化:
Constr::Constr( ): tx_struct{nullptr, 42U} {}
这是一个简化的编译示例:
#include <stdint.h>
typedef struct
{
uint8_t* data;
uint16_t data_ln;
} Struc_Data;
struct Foo
{
Foo() : tx_struct{nullptr, 0U} {}
Struc_Data tx_struct;
};
请注意,在C ++中,使用typedef
语法进行类定义是很常见的。首选形式是
struct Struc_Data { .... };
答案 1 :(得分:0)
另一种解决方案:
使用必需的参数定义构造函数。
struct Struc_Data
{
Struc_Data(uint8_t* data1, uint16_t data2) : data(data1), data_In(data2) {}
uint8_t* data;
uint16_t data_ln;
};