어떤 이유로 든 개인 생성자를 호출하는 정적 메서드로 만들어진 개체가 있습니다. (싱글 톤이 아닙니다.)C++에서 제대로 다운 캐스트하는 방법
더 많은 멤버와 기능을 가진 첫 번째 오브젝트에서 새 오브젝트를 파생 시키려고합니다.
정적 메서드가 firstObject*
개체를 반환하기 때문에 문제가 발생하므로 secondObject*
의 다운 캐스팅을 사용하여 생성하면 메모리가 오버플로됩니다.
어떻게해야합니까? 첫 번째 객체의 코드에 액세스 할 수 있지만 생성자를 변경하는 것은 불가능합니다 (변경하면 큰 코드를 변경해야합니다).
편집 : 모든 조치에
감사합니다. 보호 될 생성자를 변경할 수 있습니다.
게시 코드는 설명하는 것보다 낫습니다. 나는 당신의 질문에서 그 문제를 해결할 수 없다. – Angew
private 생성자를 표시하면 실제로 많은 코드가 다시 작성되어야합니다. 그런 다음 정상적인 방식으로 클래스를 파생시킵니다. – Bathsheba
보호 된 ctor를 클래스에 추가 할 수 있습니까? 다음과 같이 할 수 있습니다. 1. 가능한 경우 C++ 11 위임 생성자를 사용합니다. 또는 가능하다면 개인 ctor의 기능을 함수에 추출하십시오. – Angew