C ++可以在int函数中返回类似“NULL”的东西吗?

时间:2014-02-09 15:59:01

标签: c++ function null return

我有一个计算某些东西的函数,如果结果无效,我想返回类似“NULL”的东西。 我找到了一种使用指针的方法,但有更简单的方法吗?

3 个答案:

答案 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.
}