这个问题与例如
不同What is the difference between g++ and gcc?
因为如果已知所述问题的原因是“g ++和gcc之间的差异”,则不再需要寻找答案。换句话说,虽然答案是一样的,但问题却不同。
我有以下程序test.cpp:
struct CircuitElement {
bool value;
const char *name;
CircuitElement *next;
CircuitElement (const char *name);
virtual void evaluate () = 0;
};
struct Button: CircuitElement {
Button (const char *name);
virtual void evaluate ();
};
CircuitElement::CircuitElement (const char *name): name (name), next (0) {
}
Button::Button (const char *name): CircuitElement (name) {
}
void Button::evaluate () {
// Some statements
}
Button button ("button");
int main () {
return 0;
}
它可以在www.cpp.sh上编辑, 但如果我用本地编译它:
gcc test.cpp
我收到以下错误:
C:\Users\info_000\AppData\Local\Temp\cceVLVFd.o:test.cpp:(.rdata$_ZTV14CircuitElement[_ZTV14CircuitElement]+0x10): undefined reference to `__cxa_pure_virtual'
C:\Users\info_000\AppData\Local\Temp\cceVLVFd.o:test.cpp:(.rdata$_ZTI6Button[_ZTI6Button]+0x0): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
C:\Users\info_000\AppData\Local\Temp\cceVLVFd.o:test.cpp:(.rdata$_ZTI14CircuitElement[_ZTI14CircuitElement]+0x0): undefined reference to `vtable for __cxxabiv1::__class_type_info'
collect2.exe: error: ld returned 1 exit status
我一定是做了一些微不足道的错误,而且我一直在谷歌搜索答案,但无济于事。
我错过了什么?