여기 (이 코드는 작동하지 않습니다) 내가 할 노력하고있어입니다 :파생 된 C++ 클래스가 기본 포인터를 통해 어떻게 복제 될 수 있습니까?
내가 무엇을 얻을 내가 같은 가 인쇄 "유도"를 참조하는 거라고 무엇class Base
{
virtual Base *clone() { return new Base(this); }
virtual void ID() { printf("BASE");
};
class Derived : publc Base
{
virtual Base *clone() { return new Derived(this); }
virtual void ID() { printf("DERIVED"); }
}
.
.
Derived d;
Base *bp = &d;
Base *bp2 = bp->clone();
bp2->ID();
는 ... "BASE ". 저는 오랫동안 C 프로그래머 였고 C++에 대해 상당히 숙련 된 경험이 있습니다. 그러나이 책으로 어떤 진전을 이루지는 못했습니다 ... 어떤 도움을 주시면 감사하겠습니다.
더 많은 코드를 표시합니다. 특히이 경우 모든 클래스의 모든 생성자가 중요합니다. (어떤 것은 코드에서 유추 할 수 있지만, 모든 사람들이 더 정확한 답을 얻는 데 도움이됩니다 ...) – Macke
흠. 초기 코드는 Base bp = & d였습니다. 이제는 Base * bp = & d;로 변경되었습니다. – Macke
질문과 관련이 없지만 클래스에 가상 소멸자가 필요할 수도 있습니다. –