Ogre로 입력을 처리하기 위해 OIS를 사용하고 있으며 현재 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
이 기능을 구현하는 가장 좋은 방법은 무엇일까요? 사전에
덕분에
편집 : 그냥 명확히하기 위해 가능하면 이미 초기화 목록을 사용합니다. 제 의도는 Message 객체를 사전 구축 한 다음 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 멤버가 있기 때문에 기본 할당 연산자 *가 없습니다. –