我有以下用例,一个带有一些boolean和int变量的结构
struct a { int field1; bool field2; bool field3; };
我正在重构这段代码,并为struct编写构造函数,问题是字段的默认初始化.
我不是在批评任何语言构造,但理想情况下我希望null成为语言本身的一部分
我的意思是我应该能够为结构a定义为
a : field1(null.int), field2(null.bool), field3(null.bool) {}
C++不允许它,因为没有定义null.int或null.bool.在C++中唯一的方法是
a: field1(-1), field2(false), field3(false) {}
Johannes Sch.. 9
你可以做
struct a { a():field1(), field2(), field3() { } int field1; bool field2; bool field3; };
并且所有字段将分别为零和假.如果你想说这些字段具有不确定的值,我担心你必须使用其他技术.一个是使用boost::optional
:
struct a { a():field1(int()), field2(bool()) { } optionalfield1; optional field2; optional field3; };
叶子field3不确定.使用访问值*field_name
.用field == boost::none
或测试无值if(field) { ... }
.
你可以做
struct a { a():field1(), field2(), field3() { } int field1; bool field2; bool field3; };
并且所有字段将分别为零和假.如果你想说这些字段具有不确定的值,我担心你必须使用其他技术.一个是使用boost::optional
:
struct a { a():field1(int()), field2(bool()) { } optionalfield1; optional field2; optional field3; };
叶子field3不确定.使用访问值*field_name
.用field == boost::none
或测试无值if(field) { ... }
.