我有以下代码。
#include <exception>
public MyException : public std::exception {
private:
const char* MESSAGE = "ExceptionReport";
protected:
static const int MAX_MESSAGE_LENGTH = 200;
char composedMessage[MyException::MAX_MESSAGE_LENGTH];
public:
virtual const char* what() const throw() {
strcpy(this->composedMessage, this->MESSAGE);
return this->composedMessage,
}
};
我想知道为什么这不起作用。根据tu VS 2013 this->composedMessage
在使用const
时突然strcpy
。我已经看到几个类似的解决方案来初始化char数组的成员。为什么这不适合我?我什么看不到?
我需要composedMessage
在strcat
的子类中通过MyException
添加更多信息。但如果它甚至不能以当前的形式工作,那就没有用了。
答案 0 :(得分:4)
what()
标记为const
。由于它是const
,因此您无法修改函数中的类状态(composedMessage
)。您可以将composedMessage
mutable
设为:
mutable char composedMessage[MyException::MAX_MESSAGE_LENGTH];
这将允许您在const
函数中更改它。