2012-02-22 20 views
0

我想寫一個簡單的try/catch語句,但我一直在收到編譯器錯誤。這是我的代碼:C++ - Noob - 簡單的嘗試/捕獲

int divide(int x, int y) 
{ 
    if (y == 0) { 
     throw 0; 
    } 
    return x/y; 
} 

Exception::Exception() 
{ 
    try { 
     cout << divide(10, 0) << "\n"; 
    } catch (int e) { 
     cout << "Cannot divide by " << e << "\n"; 
    } 
} 

我收到以下編譯器錯誤:

LNK2019:無法解析的外部符號 「公用:int_ thiscall異常::分(INT,INT」?(分@異常@ @ QAEHH @ Z)的函數引用 「公衆: _thiscall異常:異常(無效)」(?? 0Exception @@ QAE @ XZ)

LNK1120:1周無法解析的外部

+1

這將有助於展示您收到錯誤消息。 – 2012-02-22 01:04:45

+0

對不起,我忘記了包含錯誤信息。我剛添加它! – Jon 2012-02-22 01:05:22

+2

將'Exception :: Exception()'改爲'int main()' – JRL 2012-02-22 01:06:12

回答

5

我的魔法遠程調試技巧告訴我那divideException的成員,但是您正在全局名稱空間中定義它。前綴divideException::,一拉

int Exception::divide(int x, int y) 
{ 
    if (y == 0) { 
     throw 0; 
    } 
    return x/y; 
} 
+0

謝謝塞斯。這解決了我的不好問題! – Jon 2012-02-22 01:07:39

3

你所得到的是一個連接錯誤。你提到divide作爲Exception類的成員函數,但忘記了它的實現。只需撥打電話號碼::即可。

cout << ::divide(10, 0) << "\n"; // Take the function at global scope 
            // This still leaves the member function implemenation 
            // unimplemented which is bad though. 

int Exception :: divide(int x, int y) { .... } 
+1

前者更多的是一個bandaid解決方案,但是提供所有選項的+1(以及您添加的評論使其更好) – 2012-02-22 01:12:26