상위 중첩 클래스에서 생성자를 사용하여 상속 한 중첩 클래스의 생성자를 만들려고합니다. 기본적으로 :C++ 함수 매개 변수의 기본 클래스 포인터 포인터에 대한 캐스팅
BaseList<T>::BaseNested::BaseNested(BaseNode*& ptr)
를 (그리고 그것의 코드에서 말했다 포인터의 주소를 필요로하기 때문에 참조에 의한 PTR 매개 변수를 얻기 위해 필요합니다
DerivedList<T>::DerivedNested::DerivedNested(DerivedNode*& ptr)
: BaseList<T>::BaseNested::BaseNested(ptr)
{}
내 BaseNested의 생성자의 프로토 타입은 다음과 같이 간다)
필자는 DerivedNode *를 BaseNode *로 캐스트해야한다고 생각했지만 static_cast :: BaseNode *> (ptr)은 참조가 아니므로 일치하는 함수를 찾지 않으며 static_cast :: BaseNode * &> (ptr) 잘못된 캐스트 오류가 발생합니다.
dynamic_cast도 마찬가지입니다. reinterpret_cast는 컴파일되지만 실행 중에 잘못된 결과를줍니다.
누구나 그 부모 생성자를 호출 할 수있는 방법을 알고 있습니까?
'DerivedNode * &'유형 중 하나와 'BaseNode * &'유형 중 하나는 동일한 포인터를 참조하는 두 개의 참조를 가질 수 없습니다. 포인터 - 투 - 포인터와 참조 - 투 - 포인터는 다형성과 함께 잘 작동하지 않습니다. 다형성 행동을 원한다면, 이런 일을 피하십시오. –