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();
问题出在哪里? :)
答案 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视为存储类说明符,但它不会影响 存储类。)