추상적 인 형식이어야합니다 :C++ 오류 : 필드를 선언 할 수 없습니다 것은이 상황이다
class Base {
virtual void methodA() = 0;
virtual void methodB() = 0;
};
class Base_A : public Base {
void methodA();
void methodB();
};
class Base_B : public Base {
void methodA();
void methodB();
};
class MyClass {
private:
Base * b;
};
내가 오류 메시지가 제공 컴파일 :
error: cannot declare field MyClass::b to be of abstract type because the following virtual functions are pure within Base:
Base::methodA()
Base::methodB()
방법이 문제를 해결하기를?
업데이트 지금 컴파일됩니다. 내가 무엇을 변경했는지 알지 못합니다.
'Base b;가 아닌'Base * b; '입니까? – sharptooth
코드 스 니펫이 정확합니까? 그것은 실제로 OK를 컴파일하고 정확합니다. 아마도 원래 코드는 'Base * b'대신 'Base b'였을 것입니다. '기지 b'는 당신이 겪고있는 오류를 줄 것입니다. – Skizz
또한 Base 소멸자를 가상으로 만드는 것을 잊지 마십시오. – Naveen