2015-12-02 114 views
1
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(); 

问题出在哪里? :)

回答

1

标记为const的成员函数不能更改类的状态。在GetMyHorseVnum()你有

m_dwMountTime = get_dword_time(); 

其中改变类的状态。你要么需要获得功能摆脱const改性剂或使m_dwMountTimemutable

1

你宣布你的GetMyHorseVnum()方法const,所以它不能改变(分配)类成员。

0

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

你可能想使m_dwMountTimemutable,使之可修改:

mutable DWORD m_dwMountTime; 

可变 - 适用于非参考 非const类型的非静态类成员和指定成员不影响该类的外部可见状态(如经常用于互斥体,备忘录 缓存,延迟评估和访问工具)的 。 const类的可变成员 是可修改的。 (注:C++语言的语法 对待可变的存储类说明符,但它不会影响 存储类。)

+0

让我们尝试...... – user5546877