当前位置:  开发笔记 > 编程语言 > 正文

结构与布尔字段默认初始化?

如何解决《结构与布尔字段默认初始化?》经验,为你挑选了1个好方法。

我有以下用例,一个带有一些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()) { }
    optional field1;
    optional field2;
    optional field3;
};

叶子field3不确定.使用访问值*field_name.用field == boost::none或测试无值if(field) { ... }.



1> Johannes Sch..:

你可以做

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

并且所有字段将分别为零和假.如果你想说这些字段具有不确定的值,我担心你必须使用其他技术.一个是使用boost::optional:

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

叶子field3不确定.使用访问值*field_name.用field == boost::none或测试无值if(field) { ... }.

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有