【发布时间】:2020-07-03 21:03:01
【问题描述】:
我知道可以实现带有可选参数的函数,如下所示:
int someFunction(int A, int B = -1) {
if (B != -1) {
... // If B given then do something
} else {
... // If B not given then do something else
}
}
但是,我愿意按照同事的建议利用 std::optional 。这是我正在尝试做的,但我遇到了错误:
int some Function(int A, std::optional<int> B) {
if (B.has_value()) {
... // If B given then do something
} else {
... // If B not given then do something else
}
}
问题在于,在第一种方法中,我可以像 someFunction(5) 这样调用函数,C++ 会意识到我选择不使用可选参数。但是在第二种方法中,以同样的方式调用someFunction(5) 会产生错误too few arguments to function call。
我希望能够在不包含可选参数的情况下使用第二种方法调用函数,这可能/推荐吗?
【问题讨论】:
-
一个可选项通常表示值的存在/不存在(尤其是作为返回值),而 默认参数 是您在第一种情况下使用的。在这方面,它们是完全不同的概念