在只读对象中分配成员 '

assignment of member ' in read-only object

本文关键字:成员 分配 只读 对象      更新时间:2023-10-16
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++语言语法 将可变视为存储类说明符,但它不影响 存储类。