我有一个计算某些东西的函数,如果结果无效,我想返回类似“NULL”的东西。 我找到了一种使用指针的方法,但有更简单的方法吗?
答案 0 :(得分:4)
这实际上取决于你的函数的语义。如果函数的契约是它将向用户返回int
,并且由于某种原因它无法这样做,那么你的函数应该抛出异常。如果函数的合同是它将向用户返回int
或不返回任何内容,那么您可能希望使用boost::optional
。
答案 1 :(得分:3)
NULL的类型为void *,因此它不能只传递给int,但您也可以执行以下操作:
#define NOT_FOUND -1
或者只是你不使用的一些号码。
另外,正如@juanchopanza指出你可以抛出异常
答案 2 :(得分:1)
通过:enums或#defines
使用Event-Driven Programming设置返回代码:
(警告这是一个非常天真的例子)
#define GOOD_INPUT 10001
#define BAD_INPUT 10002
int test_function() {
std::string str;
std::cout << "Enter a string:" << std::endl;
std::cin >> str;
if (!str.empty()) {
return GOOD_INPUT;
}
else {
return BAD_INPUT;
}
}
稍后您可以检查一切是否顺利:
int rtn_code = test_function();
if (rtn_code == BAD_INPUT) {
//something went wrong: say or do something.
}