我正在尝试编写一个简单的try / catch语句,但我一直在编译错误。这是我的代码:
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:函数“public: _thiscall异常::”例外(无效)“(?? 0Exception @@ @ QAE XZ)
LNK1120:1个未解析的外部
答案 0 :(得分:5)
我的神奇远程调试技巧告诉我divide
是Exception
的成员,但是你在全局命名空间中定义它。前缀divide
与Exception::
,la
int Exception::divide(int x, int y)
{
if (y == 0) {
throw 0;
}
return x / y;
}
答案 1 :(得分: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) { .... }