#include <stdio.h>
class A {
public:
virtual void print();
A();
};
class B :public A {
public:
void print();
B();
};
class C :public B {
public:
void print();
C();
};
A::A(){
}
B::B(){
}
C::C(){
}
void B::print() {
printf("From B\n");
}
void C::print() {
printf("From C\n");
}
int main() {
B* object = new C;
object->print();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译此C++文件时,出现以下错误.无法弄清楚原因.我试着在SO上阅读类似的未定义的vtable问题.
/tmp/ccpOkVJb.o: In function `A::A()':
test1.cpp:(.text+0xf): undefined reference to `vtable for A'
/tmp/ccpOkVJb.o:(.rodata._ZTI1B[_ZTI1B]+0x10): undefined reference to `typeinfo for A'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
如果A::print()不打算实现,请将其声明为纯:
class A {
public:
virtual void print() = 0;
A();
};
Run Code Online (Sandbox Code Playgroud)
否则,实现它.