我有一个计算某些东西的函数,如果结果无效,我想返回类似"NULL"的内容。我已经找到了使用指针的方法,但是有更简单的方法可以做到这一点吗?
这实际上取决于函数的语义。如果函数的协定是它将向用户返回int
,并且由于某种原因它无法这样做,那么您的函数应该引发异常。如果函数的协定是它将向用户返回int
或不返回任何内容,则可能需要使用 boost::optional
。
NULL 的类型为 void*,因此它不能只传递给 int,但您也可以执行以下操作:
#define NOT_FOUND -1
或者只是一些你不使用的数字。
另外,正如@juanchopanza指出的那样,您可以抛出异常
通过以下方式使用事件驱动编程: 枚举或#defines
设置返回码:
(警告这是一个非常幼稚的例子)
#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.
}