Possible Duplicate:
GCC C++ Linker errors: Undefined reference to 'vtable for XXX', Undefined reference to 'ClassName::ClassName()'
I have been banging my head against a wall for a long time because of a strange ld error. So I reproduced it in a small test case to understand the issue.
I declared a class and I derived another one in a header file:
class BaseClass {
public:
BaseClass(){};
virtual void func(){};
};
class DerivedClass: public BaseClass {
public:
DerivedClass();
void func();
};
Then I defined the constructor but forgot to define func
(voluntary here, but that actually what I did with a silly copy/paste...):
DerivedClass::DerivedClass(){
cout << "Derived constructor" << endl;
}
//void DerivedClass::func(){
// cout << "Derived func" << endl;
//}
Then I get:
undefined reference to `vtable for DerivedClass'
Edit: And the message points the declaration of the consctructor!
If I uncomment the definition of func
, then I have no error. So my question:
Why does the linker didn't tell me that the definition of func
is missing?
The solution might be obvious when you are experienced, but for a beginner like me it's not!
Thanks for your help.