순수 가상 함수가있는 기본 클래스가 있고 자체 클래스뿐만 아니라 기본 클래스 가상 함수에 대한 정의가있는 파생 클래스가 있습니다.기본 클래스 객체를 가상 클래스가 아닌 파생 클래스로 호출하는 방법은 무엇입니까?
나는 자식 클래스의 메소드를 호출 할Base *bc =new Child();
이 개체를 사용하는 (정의 또는 부모에 선언되지 않음) :
는 지금은 같은 클래스를 파생 할 기본 클래스 개체를 지적했다.하지만 컴파일러 오류 memeberFunction not define in Base class
이 표시됩니다.
코드는 다음과 같음 :
class Base
{
public:
virtual void method1() = 0;
};
class child : public Base
{
public:
virtual void method1() {}
void Method2() { /* some implementation */ }
};
내가 어떻게 이것을 달성 할 수 있습니까?
bc->Method2();
['dynamic_cast'] (http://stackoverflow.com/questions/9973708/dynamic-cast-from-base-to-derived)를 참조하십시오. – DCoder
'bc'가'Base *'이면, * 왜 * bc-> Method2();를하고 싶습니까? 여기에 근본적인 문제가 무엇입니까? – Johnsyweb
어떤 유형의 Base *가 두포인지 알면, 원하는 유형으로'static_cast'를 할 수 있습니다. type_id 연산자를 사용하거나 유형 (일반적으로 열거 형 또는 정수로 ID)을 반환하는 Base에서 일종의 가상 함수를 만듭니다. –