2014-02-09 231 views
1

我有一个函数计算的东西,如果结果是无效的,我想返回像“NULL”的东西。 我已经找到了使用指针的方法,但有没有更简单的方法来做到这一点?C++可以通过一个int函数返回类似“NULL”的东西吗?

+1

没有没有,但你可以抛出一个异常。 – juanchopanza

+0

我不想停止程序,我只是想检查这种可能性,并做一些事情。 – maria

+3

@maria异常不会停止程序;只要他们没有被捕获。通常你总是有一个全局异常处理程序;所以如果一个异常未被捕获,程序终止受控制 – Paranaix

回答

4

它真的取决于你的函数的语义。如果函数的合约是它将返回一个int给用户,并由于某种原因无法这样做,那么你的函数应该抛出一个异常。如果该功能的合同是要么向用户返回int或者什么都不返回,那么您可能需要使用boost::optional

1

使用Event-Driven Programming通过:枚举或#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. 
} 
3

NULL是void *的类型,所以它不能只传递给int,但你也可以只是做一些事情:

#define NOT_FOUND -1 

或只是一些你不使用的数字。

此外,作为@juanchopanza指出,你可以抛出一个异常

相关问题