2017-02-22 1 views
-1

컨텍스트 : I지도는 기준 파라미터로 주어지는 함수 내부형식 변환 ++

std::map<type, Base> 

만든다. 이 기능은 이상적으로 참조 매개 변수로 변환하는 가장 좋은 방법은 무엇

std::map<type, Derived>&. 

어딘가에에서 호출에서

std::map<type, Derived> 

std::map<type, Basis> 

Basis은 기준입니다 Derived의 수업? 나는 이미 직접 형변을 통해 개종하려했지만 실패했다. Derived에서 Derived *로, Base에서 Base *로 전환하지 않는 것이 좋습니다.

기본 요소가있는지도를 만든 다음 다시 가져 와서 유도 된 요소가있는지도에서 작업해야하는 함수를 실행해야합니다.

+1

보유하고있는 컨테이너와 이동할 컨테이너를 추가하십시오. 또한 당신이 시도한 것. – NathanOliver

+0

"Basis is ..."에 대해 이야기한다면 이전에 나온 단어가 그 단어를 포함해야합니다. 근본적으로 "나는 물건이 작동하지 않는 곳에 문제가 있습니다."와 같은 질문을 더 이상 묻지 않고 있습니다. – Aziuth

+0

''basis_map [something] .some_function();'과 같은 것을하고, 상속 클래스의 함수를 갖고 싶습니까? – NathanOliver

답변

4

파생 컨테이너에서 기본 컨테이너로 변환 할 수 없습니다. 우선 파생이 기본보다 큰 경우 여분의 비트는 어떻게됩니까? 당신은 원시 포인터없이 솔루션에 접근 무언가를 원하는 경우에

, 이것을 사용 :

std::map<type, std::unique_ptr<Base>> 

는 그런 다음지도에 자료 또는 파생 된 개체 중 하나를 넣을 수 있습니다.