简体   繁体   English

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

[英]overloading std::exception - what() cannot convert const char*

I am writing my exception class: 我正在编写异常类:

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;
}

I compiling with g++ and get the following error for the return line in the function what(): 我使用g ++进行编译,并在what()函数的返回行中收到以下错误:

cannot convert 'std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::c_str, std::allocator >' from type 'const char* (std::__cxx11::basic_string::)() const' to type 'const char*' return m_errorMsg.c_str; 无法将类型'const char *(std :: __ cxx11 :: basic_string ::)()const'转换为'std :: __ cxx11 :: basic_string <_CharT,_Traits,_Alloc> :: c_str,std :: allocator>' 'const char *'return m_errorMsg.c_str;

What I am I doing wrong? 我做错了什么? Thanks 谢谢

Use return m_errorMsg.c_str(); 使用return m_errorMsg.c_str(); , and it should work - c_str is a function , not a variable . ,并且应该可以工作c_str是一个函数 ,而不是变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 无法转换 std::stringstream<char> 常量字符* - Cannot convert std::stringstream<char> to const char* 无法将&#39;std :: string&#39;转换为&#39;const char * - Cannot convert ‘std::string’ to ‘const char* 无法从const char []转换为std:string * - Cannot convert from const char[] to std:string * 无法将&#39;const char *&#39;转换为&#39;std :: istream * - cannot convert ‘const char*’ to ‘std::istream* OSX“错误:无法转换&#39;const std :: __ cxx11 :: basic_string”是什么意思 <char> “ 意思? - OSX What does “error: cannot convert 'const std::__cxx11::basic_string<char>” mean? const char *,const char(&)[N]和std :: string的函数重载 - Function overloading for const char*, const char(&)[N] and std::string 无法转换 &#39;std::basic_string<char> &#39; 到 &#39;const char*&#39; 作为参数 &#39;1&#39; 到 &#39;int system(const char*)&#39; - cannot convert 'std::basic_string<char>' to 'const char*' for argument '1' to 'int system(const char*)' 初始化无法从const char [3]转换为std :: string * - Initializing cannot convert from const char [3] to std::string * C ++无法将&#39;const char *&#39;转换为&#39;std :: string *&#39; - C++ cannot convert 'const char*' to 'std::string*' .cpp:23:错误:无法将参数&#39;1&#39;的&#39;std :: string&#39;转换为&#39;const char *&#39;到&#39;int atoi(con​​st char *)&#39; - .cpp:23: error: cannot convert ‘std::string’ to ‘const char*’ for argument ‘1’ to ‘int atoi(const char*)’
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM