c++ - 如何初始化此结构?

标签 c++ struct initialization

抱歉,没有具体说明,但是...

假设我有这个结构:

struct OptionData
{
    Desc desc;
    bool boolValue;
    std::string stringValue;
    int intValue;
    double numberValue;
};

我正在使用这种方式:
OptionData isWritePatchesOptionData = {isWritePatchesDesc, {}, {}, {}, {}};

由于我有很多选择,所以我想做。像这样:
<type_here> OptionDataList = {{}, {}, {}, {}};

所以我可以做:
OptionData isSeamCutOptionData = {isSeamCutDesc, 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};

现在所有其他成员都处于默认/零状态。

关于c++ - 如何初始化此结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60600986/

相关文章:

ruby-on-rails - 如何使用 Ruby on Rails 初始化一个类来设置自定义参数值?

c++如何将数组传递给函数内部的函数

c - 如何使结构成员私有(private)?

c# - 奇怪的结构行为

iphone - NSObject 默认构造函数

c++ - 在 C++ 中创建一个集合<char>

c++ - 如何比较CMap Key Case Insensitive?

c++ - 进程保护

c++ - eclipse ncurses 和 xterm,打印未知字符

python - struct.unpack 导致TypeError :'int' 不支持buffer接口(interface)