2014-02-18 5 views
1

내가 구조체 유무 :구조체를 할당 할 수 있습니까?

struct Handle 
{ 
public: 
    const unsigned long Id; 
    const std::type_index Index; 
    Handle() : Id(-1), Index(std::type_index(typeid(Event))){} 
    Handle(unsigned long id, std::type_index index) : Id(id), Index(index) {} 
}; 

을하지만 변수에 할당 할 때 나는

오류 10 오류 C2582를 얻을 : '연산자 ='기능은 이벤트 핸들러 '에서 사용할 수 없습니다 :: 처리 '

왜? (내가 구조체를 사용하고 있기 때문에 데이터 유형으로 처리되고 새로운 것으로 작성되지 않고 함수에서 리턴 될 수 있기 때문에 정확합니다.)

+6

멤버가 'const'인 경우 할당과 마찬가지로 할당 할 수 없습니다. – chris

답변

12

기본 할당 연산자는 Handle에 대해 생성되지 않습니다. 부적절하다. 그것이하는 일은 단순히 회원 측의 것을 할당하는 것이며, 이는 분명히 const 회원에게는 허용되지 않습니다.

대신에 const을 선언하지 마십시오. 할당 연산자 외부에서 수정하지 않으려는 경우 private 섹션에 입력하고 수정할 수있는 인터페이스는 제공하지 않습니다.

관련 문제