나를 귀찮게 코드의 샘플입니다파생 클래스에서 기본 클래스의 보호 된 메서드에 액세스하는 방법?
class Base {
protected:
virtual void foo() = 0;
};
class Derived : public Base {
private:
Base *b; /* Initialized by constructor, not shown here
Intended to store a pointer on an instance of any derived class of Base */
protected:
virtual void foo() { /* Some implementation */ };
virtual void foo2() {
this->b->foo(); /* Compilator sets an error: 'virtual void Base::foo() is protected' */
}
};
당신이 보호 오버라이드 기능에 어떻게 액세스합니까?
도움 주셔서 감사합니다. : o)
귀하의 구현이 옳다고 생각하지 않습니다. 왜 멤버 변수로 Base 인스턴스가 있습니까? this-> b-> foo()는 순수 가상 메서드를 호출하려고합니다. – GWW
이 프로그램을 컴파일해서는 안됩니다. 추상 클래스를 인스턴스화 할 수 없습니다 ....'b'가'Base'에서 파생 된 다른 클래스의 인스턴스를 가리키지 않으면. – 341008
정밀도가 생략되었습니다. Derived :: b 특성은 기본 –