串和放大器;与wstring&在runtime_error中

时间:2014-03-13 14:20:24

标签: c++ runtime-error

我需要继承runtime_class的异常类来接受wstring&。这是MyExceptions.h

using namespace std;

class myExceptions : public runtime_error
{

public:
    myExceptions(const string &msg ) : runtime_error(msg){};
    ~myExceptions() throw(){};

};

我希望myExceptions像这样接受wstring&myExceptions(const **wstring** &msg )。但是当我运行它时,我收到了这个错误:

C2664: 'std::runtime_error(const std__string &): cannot convert parameter 1 from 'const std::wstring' to 'const std::string &'

我了解runtime_error接受string&而非wstring&定义如下C++ Reference - runtime_error

> explicit runtime_error (const string& what_arg); 

如何在wstring&中使用runtime_error

1 个答案:

答案 0 :(得分:3)

最简单的方法是传递runtime_error传统消息并直接在myExceptions类中处理你的wstring消息:

class myExceptions : public runtime_error {
public:
    myExceptions(const wstring &msg ) : runtime_error("Error!"), message(msg) {};
    ~myExceptions() throw(){};

    wstring get_message() { return message; }

private:
    wstring message;
};

否则,您可以编写一个私有静态成员函数,该函数从wstring转换为string,并使用它将转换后的字符串传递给runtime_error的构造函数。但是,正如您在this answer中看到的那样,这不是一件非常简单的事情,对于异常构造函数来说可能有点太多了。