2012-02-22 19 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