在只读对象中分配成员'

时间:2015-12-02 16:00:49

标签: c++

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();

问题出在哪里? :)

3 个答案:

答案 0 :(得分:1)

标记为Dim mf As New MessageFilter Application.AddMessageFilter(mf) ... Imports System.Security.Permissions Public Class MessageFilter Implements IMessageFilter <SecurityPermission(SecurityAction.LinkDemand, Flags:=SecurityPermissionFlag.UnmanagedCode)> Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) As Boolean Implements IMessageFilter.PreFilterMessage ' optional code here determine which events mean wake ' code here to turn timer off ' return false to allow message to pass Return False End Function End Class 的成员函数无法更改类的状态。在const你有

GetMyHorseVnum()

改变了班级的状态。您需要删除函数上的m_dwMountTime = get_dword_time(); 修饰符或使const m_dwMountTime

答案 1 :(得分:1)

您将GetMyHorseVnum()方法声明为const,因此无法更改(分配)类成员。

答案 2 :(得分:0)

您不能在const成员函数中更改成员变量,该承诺不会更改类的状态。

您可能希望m_dwMountTime mutable使其可修改:

mutable DWORD m_dwMountTime;
  

mutable - 适用于非引用的非静态类成员   非const类型并指定该成员不会影响   类的外部可见状态(通常用于互斥,备忘录   缓存,惰性评估和访问工具)。可变成员   const类是可修改的。 (注意:C ++语言语法   将mutable视为存储类说明符,但它不会影响   存储类。)