gpt4 book ai didi

c++ - 具有 bool 字段默认初始化的结构?

转载 作者:太空狗 更新时间:2023-10-29 23:23:51 31 4
gpt4 key购买 nike

我有以下用例,一个带有一些 boolean 和 int 变量的结构

struct a {

int field1;
bool field2;
bool field3;

};

我正在重构这段代码,并为 struct 编写一个构造函数,问题是字段的默认初始化。

我不是在批评任何语言结构,但理想情况下我希望 null 成为语言本身的一部分

我的意思是我应该能够为 struct a 定义 as

a : field1(null.int), field2(null.bool), field3(null.bool) {}

C++ 不允许这样做,因为没有定义 null.int 或 null.bool。是在 C++ 中做的唯一方法是

a: field1(-1), field2(false), field3(false) {}

最佳答案

你可以做到

struct a {
a():field1(), field2(), field3() { }
int field1;
bool field2;
bool field3;
};

并且所有字段将分别为零和假。如果你想说字段具有不确定的值,恐怕你必须使用其他技术。一种是使用 boost::optional :

struct a {
a():field1(int()), field2(bool()) { }
optional<int> field1;
optional<bool> field2;
optional<bool> field3;
};

让 field3 不确定。使用 *field_name 访问值。使用 field == boost::noneif(field) { ... } 测试 none 值。

关于c++ - 具有 bool 字段默认初始化的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/412611/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com