【发布时间】:2015-02-07 16:15:20
【问题描述】:
在 C++ 中是否可以将 boost::optional 转换为 double?
I.E.
boost::optional<double> time;
double realTime;
realTime = time;
最后一行给了我一个错误,我
"Assigning to 'double' from incompatible type boost::optional<double>"
【问题讨论】:
-
那么,当
time不是double时,您希望发生什么? (optional<double>可能是双重的,可能什么都不是)。 -
@Yakk:零似乎是一个合理的替代物。
-
@RobertHarvey 什么,不是
NaN?哎呀,在某些情况下,-inf或+inf是合理的(例如,累积最大值或最小值)。我的观点是,你需要回答这个问题,并在你这样做的时候思考它。在某些情况下,任何默认值都会很糟糕。 -
@Yakk:NaN 会起作用,尽管我认为这在某些情况下会出现问题。无论如何,这是一个有损转换;任何选择都将是某种妥协。