2012-01-14 2 views
1

"="연산자를 재정의하고 싶습니다. 클래스에 "="를 사용할 때 변경하려는 const 멤버가 있습니다. 오브젝트를 분해하고 새로운 대상이 효과가있을 수 있지만 "이"는 변할 수 없습니다. 그래서, 저를 도와 주시겠습니까?+ + 연산자를 오버라이드하고이

+2

멤버 const에 단순히 레이블을 지정하지 않는 것이 옵션이 아닌 것 같습니까? 왜 안돼? –

답변

1

변경하려는 회원을 mutable으로 표시 할 수 있습니다. 이것은 키워드의 목적입니다. 물론

, 당신은 당신은 pimpl 관용구를 사용할 수 있습니다 ... operator= 클래스를 수정하지 않습니다 그 클래스의 사용자에게

+0

사실, 그냥 "="개체의 다른 const 멤버를 복사하려면 사용하고 싶습니다. 난 deconstructor 및 생성자를 사용하는 방법을 알고 싶습니다. – TonyWen

+0

@ TonyWen : 소멸자를 명시 적으로 호출 한 다음 배치'new'를 사용할 수는 있지만 예외가 안전하지는 않습니다. –

+0

@BenVoigt : 위험이없는 것은 재미가 없습니다 ... –

1

을 암시 계약을 파괴 할 수있다. 예를 들면 다음과 같습니다.

정말이 점을 알지 못합니다.