我有这个简单的功能
struct MyException : public exception
{
const char *errorMessage = NULL;
void SetMessage(const char* message)
{
errorMessage = message;
}
const char * what () const throw ()
{
return errorMessage;
}
};
struct MyException *socketException;
当我打电话
socketException->SetMessage("socket connection error");
throw *socketException;
我在将消息设置为errorMessage的行处获得了分段错误。我错过了一些非常基本的东西,但我无法理解。我检查了有关分段错误的其他问题,我知道它有时是关于指针的错误。但我仍然没有那样做。
答案 0 :(得分:0)
您永远不会创建类MyException
的实例,所以当您尝试调用SetMessage
时,您没有可以调用它的对象。
请改为:
struct MyException socketException;
...
socketException.SetMessage("socket connection error");
throw socketException;