나는 세 가지 클래스 (쉽게 ~ B()가 정의되지 않은, 고칠 수) C++ 가상 소멸자 정의
class A {
// pure virtual funcs and member vars
virtual ~A();
}
class B : public A {
// some more pure virtual funcs
virtual ~B();
}
class C : public B {
// concrete implementations
~C() {}
}
현재이 오류에 '소속 카테고리'에 대한 정의되지 않은 참조 '로 컴파일되지 않습니다
하지만 난이 virtual - B {} '를 정의하는 것이 올바른지 또는 ~ C가 가상이어야하고 ~ B에 대한 호출이 ~ C에 전달되도록 정의되어야하는지 궁금합니다.순수 :이 질문은 (순수 virtuals에 대한 코드가 진짜, 그래서 말을하기는 어렵습니다,하지만 당신은 누락 된 소멸자 정의에 대해 얘기하고, 등) 순수 가상 소멸자에 대한라고 가정
** ** ** ** ** 실제 코드 **는 아닙니다. 우리는 당신이 누락 된 것이 무엇인지, 컴파일에서 누락 된 누락에 대해 전혀 알지 못합니다. –
순수 가상 함수는 a = 0으로 끝나야합니다. 'virtual ~ A() = 0;' –
컴파일러 오류가 아니라 링커 오류가 있습니다. 또한 코드의 모든 소멸자는 가상입니다. 재정의 함수는 암시 적으로 가상입니다. –