在只读对象中分配成员 '
assignment of member ' in read-only object
protected:
DWORD m_dwMountTime;
public:
DWORD GetLastHorseTime() const {
return m_dwHorseTime;
}
DWORD CHARACTER::GetMyHorseVnum() const {
int delta = 0;
m_dwMountTime = get_dword_time();
return c_aHorseStat[GetHorseLevel()].iNPCRace + delta;
}
好的,有我的代码。
当我尝试编译后,我收到一个错误:
char_horse.cpp: In member function 'virtual DWORD CHARACTER::GetMyHorseVnum() const':
char_horse.cpp:210:16: error: assignment of member 'CHARACTER::m_dwHorseTime' in read-only object
m_dwHorseTime = get_dword_time();
问题出在哪里?:)
标记为
const
的成员函数无法更改类的状态。 在GetMyHorseVnum()
你有
m_dwMountTime = get_dword_time();
这会更改类的状态。 您要么需要摆脱函数上的const
修饰符,要么m_dwMountTime
mutable
您将GetMyHorseVnum()
方法声明为 const
,因此它不能更改(分配(类成员。
您不能更改 const 成员函数中的成员变量,这 promise 不会更改类的状态。
您可能希望使m_dwMountTime
可变以使其可修改:
mutable DWORD m_dwMountTime;
可变 - 适用于非引用的非静态类成员 非 const 类型,并指定成员不影响 类的外部可见状态(通常用于互斥体、备忘录 缓存、延迟计算和访问检测(。可变成员 的常量类是可修改的。(注:C++语言语法 将可变视为存储类说明符,但它不影响 存储类。
相关文章:
- (为什么)我们可以在初始化中将非静态类成员分配给静态变量吗?
- 是否可以基于私有/受保护成员分配类枚举?
- 将const char * const参数成员分配给新值
- C 构造函数成员分配优化
- SystemC犯错:键入不匹配成员分配
- 为仅读取成员分配值-C
- 将受保护的结构成员分配给朋友
- C :为指针成员分配值
- 派生类的实例化是否为基类的私有成员分配内存
- 静态对象的非静态成员分配在哪里
- 在静态成员分配之前调用函数
- 对象成员分配
- 通过 C++ 中的公共函数为私有成员分配值
- 将静态 constexpr 类成员分配给运行时变量
- qt中的动态成员分配
- 在C++中声明指向结构的指针会自动为其成员分配内存.我错了吗
- 为数据成员分配一个新的随机方向,该方向不同于 c++ 中的当前方向
- 如何在成员初始化列表中为const char*类成员分配内存
- 为结构成员分配的内存是连续的吗?如果struct成员是数组呢?
- c++类成员分配