필자는 고유 한 요구 사항을 갖고 있으며 솔루션을 찾지 못했습니다.기본 클래스 메서드에서 파생 된 클래스 멤버
class Base
{
public:
void func()
{
//access the member say 'var' of derived class
}
}
- 베이스에서 파생 된 모든 클래스는 멤버 'VAR'을해야합니다 우리의 경우 필수입니다.
- 파생 클래스의 이름은 무엇이든 가능합니다. 이 공통의 멤버이기 때문에,
class Base { public: void func() { getVar(); } virtual int getVar() = 0; }; class Derived : public Base { int var; virtual int getVar() { return var; } };
더 나은 디자인은 기본 클래스에서
var
낳게 될 것이다 :
'Base'에 'var'이없는 이유는 무엇입니까? – hmjd
이것은 OO의 기본 이론입니다. – thecoshman
아, "의존성 반전". –