C++ 如何初始化此结构?
很抱歉没有具体说明,但是 假设我有这个结构:C++ 如何初始化此结构?,c++,struct,initialization,C++,Struct,Initialization,很抱歉没有具体说明,但是 假设我有这个结构: struct OptionData { Desc desc; bool boolValue; std::string stringValue; int intValue; double numberValue; }; 我用这种方式: OptionData isWritePatchesOptionData = {isWritePatchesDesc, {}, {}, {}, {}}; 因为我有很多这样的选择,
struct OptionData
{
Desc desc;
bool boolValue;
std::string stringValue;
int intValue;
double numberValue;
};
我用这种方式:
OptionData isWritePatchesOptionData = {isWritePatchesDesc, {}, {}, {}, {}};
因为我有很多这样的选择,我想这样做:
<type_here> OptionDataList = {{}, {}, {}, {}};
但在现场我真的不知道这里的_是什么类型。。。
或者在这种形式下是不可能的。。。我的意思是,不在OptionData结构中创建OptionDataList对象。。。但这显然是多余的…只需提供默认初始值设定项。使用
struct OptionData
{
Desc desc{};
bool boolValue{};
std::string stringValue{};
int intValue{};
double numberValue{};
};
结构中的所有内容都将被值初始化,这意味着带有构造函数的对象将被默认构造,而没有构造函数的对象将被零初始化
这可以让你写作
OptionData isWritePatchesOptionData = {isWritePatchesDesc}; // same as using {isWritePatchesDesc, {}, {}, {}, {}};
// and
OptionData isSeamCutOptionData = {isSeamCutDesc};
现在所有其他成员都处于默认/零状态。为什么不使用构造函数?我认为这是最严格的。我也可以这样做:OptionData isWritePatchesOptionData={isWritePatcheSDisc,{};-但这可能会导致结构成员的初始化不确定。。。但不确定。@Kabu这样也行。所有内容仍将初始化为值,因此构造函数的默认值为零,非构造函数的默认值为零。
OptionData isWritePatchesOptionData = {isWritePatchesDesc}; // same as using {isWritePatchesDesc, {}, {}, {}, {}};
// and
OptionData isSeamCutOptionData = {isSeamCutDesc};