重载std :: exception - what()无法转换const char *

时间:2017-11-27 05:01:16

标签: c++ exception overloading

我正在编写我的异常类:

class MyExcept: public std::exception
{
public:
    MyExcept(std::string _msg);
    virtual ~MyExcept() throw();
    virtual const char* what() const throw();

private:
    std::string m_errorMsg;
};


MyExcept::MyExcept(std::string _msg)
: m_errorMsg(_msg)
{
}

MyExcept::~MyExcept() throw()
{
}

const char* MyExcept:: what() const throw()
{
    return m_errorMsg.c_str;
}

我使用g ++进行编译,并在函数what():

中为返回行获取以下错误
  

无法从类型'const char *(std :: __ cxx11 :: basic_string ::)()转换'std :: __ cxx11 :: basic_string< _CharT,_Traits,_Alloc> :: c_str,std :: allocator>' const'来键入'const char *'     return m_errorMsg.c_str;

我做错了什么? 感谢

1 个答案:

答案 0 :(得分:5)

使用return m_errorMsg.c_str();,它应该有用 - c_str功能,而不是变量