我正在使用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;
}
Run Code Online (Sandbox Code Playgroud)
在C++中有可能吗?
谢谢
Las*_*lan 12
正如其他答案所说,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;
}
Run Code Online (Sandbox Code Playgroud)