int 函数C++可以返回类似 "NULL" 的东西?

C++ can an int function return something like "NULL"?

本文关键字:NULL C++ 函数 返回 int      更新时间:2023-10-16

我有一个计算某些东西的函数,如果结果无效,我想返回类似"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.
}