扩展时std::exception
,我想知道覆盖的正确方法what()
?
可以说我有一个异常类:
class MyException : public std::exception {
public:
MyException(const string& _type) : m_type(_type) {}
virtual const char* what() const throw() {
string s = "Error::" + _type;
return s.c_str();
}
}
我在上面的代码中使用了静态分析工具,它抱怨字符串会离开范围并破坏与字符串关联的内存,所以如果我在代码的某些部分s
使用它可能会出现问题。what()
如果有适当的方法const char*
从函数返回 a 而不会保留适当的内存管理?