인덱스 연산자 ([])를 오버로드하는 클래스에서 작업하고 있습니다. 요소의 할당을 허용하려면 연산자가 요소에 대한 참조를 반환해야합니다. 예를 들면 다음과 같습니다.STL 오버로드 벡터 할당
이 경우 클라이언트 코드는 반환 된 참조를 사용하여 요소에 값을 할당 할 수 있습니다. 그러나 일부 내부 정리 작업을 수행 할 수 있도록 할당 된 값을 사용할 수 있도록 요소의 실제 할당을 가로채는 방법이 필요합니다. 이 작업을 비교적 간단하고 간단하게 수행 할 수있는 방법이 있습니까? 아니면 연산자 오버로딩 대신 일부 접근 자 함수를 만들어야합니까?
왜 당신은'std :: vector'에서 상속 받고 있는지 묻습니다. – PaulMcKenzie
가상 소멸자를 제공하지 않는 클래스에서 상속하지 마십시오. 적어도 당신이하는 일을 정말로 아는 한! –
예제를 단순화하기 위해 std :: vector를 사용했습니다. 나의 실제 수업은지도를 사용합니다. 구현하고자하는 것은 양방향 매핑입니다. 선형 검색을 사용하지 않고 조회 값으로 만 키를 가져 오는 효율적인 방법이 필요합니다. 역방향 매핑을 유지하기 위해 다른 벡터/맵을 사용할 계획이지만 할당 된 값을 캡처 할 수는 없습니다. 이제 할당을 캡처하기 위해 새 클래스를 정의하는 것보다 getter/setter를 사용하는 것이 더 나을 것 같습니다. 클래스의 값을 래핑하는 또 다른 문제는 인덱스가 아니라 값을 캡처한다는 것입니다. –