gpt4 book ai didi

c++ - 为什么一个char数组类型的类成员在成员函数中突然变成了const char数组类型?

转载 作者:搜寻专家 更新时间:2023-10-31 00:59:06 26 4
gpt4 key购买 nike

我有以下代码。

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

我想知道为什么这不起作用。根据 VS 2013 this->composedMessage 使用 strcpy 时突然 const。我见过几个类似的解决方案来初始化 char 数组类型的成员。为什么这对我不起作用?我没看到什么?

我需要 composedMessage 通过 MyException 的子类中的 strcat 添加更多信息。但是,如果它甚至不能以其当前形式工作,那么添加它是没有用的。

最佳答案

what() 被标记为 const。由于它是 const,因此您不能在函数中修改类 state(composedMessage)。您可以像这样制作 composedMessage mutable:

mutable char composedMessage[MyException::MAX_MESSAGE_LENGTH];

这将允许您在 const 函数中更改它。

Live Example

关于c++ - 为什么一个char数组类型的类成员在成员函数中突然变成了const char数组类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34161592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com