我有以下自定义的NotImplementedException类。
#include <stdexcept>
#ifndef NOT_IMPLEMENTED_EXCEPTION_H
#define NOT_IMPLEMENTED_EXCEPTION_H
class NotImplementedException : public std::logic_error {
private:
std::string m_message, m_function;
public:
NotImplementedException(const char* function);
~NotImplementedException();
virtual const char* what() const;
};
#endif
#include "NotImplementedException.h"
NotImplementedException::NotImplementedException(const char* function) :
std::logic_error("NotImplementedException"), m_message("Function not
implemented: "), m_function(function) {}
NotImplementedException::~NotImplementedException() {}
const char* NotImplementedException::what() const {
std::logic_error::what();
return (m_message + m_function).c_str();
}
我在以下函数中利用了此异常。
virtual double Delta() const {
throw NotImplementedException(__FUNCTION__);
}
这是主班的考试:
try {
std::cout << option.Delta() << std::endl;
}
catch (std::logic_error& ex) {
std::cout << ex.what() << std::endl;
}
我不明白为什么它会从what()这样打印消息。例如,如果我将函数签名更改为std :: string what(),则消息将正确打印出来。我打印出的字符*不正确吗?