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

检查C++中的值定义

如何解决《检查C++中的值定义》经验,为你挑选了2个好方法。

我正在使用C++,我需要知道标量值(例如a double)是否"已定义".如果需要,我还需要能够"取消"它:

class Foo {
public:
    double get_bar();

private:
    double bar;
    void calculate_bar() {
        bar = something();
    }
};

double Foo::get_bar() {
    if ( undefined(bar) )
        calculate_bar();
    return bar;
}

在C++中有可能吗?

谢谢



1> Laserallan..:

正如其他答案所说,C++没有这个概念.你可以轻松解决它.

你可以有一个未定义的值,你在构造函数中初始化bar,通常是-1.0或类似的东西.

如果您知道calculate_bar永远不会返回负值,则可以将未定义函数实现为检查<0.0.

一个更通用的解决方案是让bool说明是否定义了bar在构造函数中初始化为false,并且在第一次设置时将其更改为true.boost :: optional以优雅的模板方式执行此操作.

这就是你所拥有的代码示例.

class Foo {
public:
    double get_bar();
    Foo() : barDefined(false) {}
private:
    double bar;
    bool barDefined;
    void calculate_bar() {
        bar = something();
    }
};

double Foo::get_bar() {
    if ( barDefined == false ) {
        calculate_bar();
        barDefined = true;
    }
    return bar;
}



2> gimpf..:

正如其他人所指出的,没有什么比"未定义"的状态更好.但你可能想看看boost.optional

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