2014-02-09 232 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指出,你可以拋出一個異常

相關問題