我正在使用C++创建异常,并且有以下测试代码:

#include <iostream>
#include <stdexcept>
#include <new>
using namespace std;

class Myerror : public runtime_error {
    private:
        string errmsg;
    public:
        Myerror(const string &message): runtime_error(message) { }
};

int main(int argc, char *argv[]) {
    throw Myerror("wassup?");
}

我正在用以下代码进行编译:



编译后,我得到以下ld警告:



如果我使用g++而不是icpc,则不会收到此警告。

我无法理解这意味着什么,以及导致此警告生成的原因。代码按预期运行,但是我想取消对发生的事情的了解。

最佳答案

请尝试以下方法:

#include <iostream>
#include <stdexcept>
#include <new>
using namespace std;

class Myerror : public runtime_error {
    public:
        Myerror(const string &message) throw(): runtime_error(message) { }
        virtual ~Myerror() throw() {}
};

int main(int argc, char *argv[]) {
    throw Myerror("wassup?");
}

为什么需要未使用的字符串errmsg?

09-04 08:37