Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何初始化此结构?_C++_Struct_Initialization - Fatal编程技术网

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};