我正在使用OIS处理Ogre的输入,并且当前在KeyPress/Release一个消息对象,如下所示将在订阅者中构建和分发。C++设置具有const成员的成员对象
class Message
{
public:
Message();
~Message();
inline void SetKeyEvent(const OIS::KeyEvent& keyEvent) { _keyEvent = keyEvent; }
const OIS::KeyEvent& GetKeyEvent() const { return _keyEvent; }
private:
OIS::KeyEvent _keyEvent;
};
由于该对象将被构造/每当经由键盘接收到的输入破坏,我试图存储构造预消息对象,然后简单地用新的数据来更新_keyEvent
字段,分发之前。
问题是,OIS::KeyEvent
对象有一个阻止我使用赋值运算符的const成员。 SetKeyEvent方法给我以下语法错误:
function "OIS::KeyEvent::operator=(const OIS::KeyEvent &)" (declared implicitly) cannot be referenced -- it is a deleted function
我想知道什么是实现这种功能的最佳方式是?
在此先感谢
编辑:只是为了澄清,在可能的情况我已经使用初始化列表。我的意图是预先构造消息对象,然后使用SetKeyEvent
方法使用来自OIS触发的KeyPress事件的新事件数据更新_keyEvent
字段。我想知道这是否可行,如果是这样,那么做到最好的方法是什么。
这不是一个const成员。这意味着'OIS :: KeyEvent'没有赋值操作符。 – Hayt
[为什么我应该更喜欢使用成员初始化列表?](http://stackoverflow.com/questions/926752/why-should-i-prefer-to-use-member-initialization-list) – LogicStuff
@Hayt它没有默认的赋值运算符*,因为*里面有一个const成员。 –