我正在使用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成員。 –