在C++中初始化构造函数初始值设定项列表中的结构
initialize a structure in constructor initializer list in C++
//我有一个结构
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
{
}
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 { .... };
另一个解决方案:
- 将C样式结构更改为C++样式结构
-
使用必需的参数定义构造函数。
struct Struc_Data { Struc_Data(uint8_t* data1, uint16_t data2) : data(data1), data_In(data2) {} uint8_t* data; uint16_t data_ln; };
相关文章:
- 没有为自己的结构调用列表推回方法
- 访问类lintalizer列表中的结构元素
- 将大括号括起来的初始值设定项列表作为结构返回
- 为什么这个 std::queue/指向结构的指针列表直到 List.Size() == 0 才释放内存?
- C++-将具有引用的长参数列表重构为结构
- 在C++中循环访问自定义结构列表的小问题
- 访问列表向量中的结构
- c ++数据输入并读回列表中的结构结构中的数组
- 如何在结构初始值设定项列表中实例化类
- 结构数组的构造函数错误,错误消息:没有构造函数实例与参数列表匹配
- 使用初始化列表填充C++中的多维结构数组时出现问题
- 使用列表进行动态结构分配
- 如何从结构列表中筛选信息
- 当接收到不明确的规范时,表示图的邻接列表的数据结构
- 用于筛子的最佳数据结构是什么(即一些被划掉的数字列表)?
- C/C++intellisense 0.26.1不显示结构成员列表
- C++使用旧编译器GCC 4.4.0在结构列表中查找字符串
- 列表结构和数组的奇怪问题
- 释放包含STL类的链接列表结构的内存
- c++游戏的列表结构