The problem is very simple, I have a base class with virtual destructor declare in Base.h
#ifndef BASE_H_ #define BASE_H_ class Base { public: Base(); virtual ~Base(); }; #endifAnd then I have a Child class inherited Base class declare in Child.h
#ifndef CHILD_H_ #define CHILD_H_ #include "base.h" class Child : public Base { // (1) public: Child(); }; #endifNow make a main.cpp and put the implementation of Base class virtual destructor.
#include "Base.h" Base::Base() {} Base::~Base() {}When building the source code, there is an error complaining that undefined reference to 'Base::Base()' at (1). If I change main.cpp to Base.cpp, the error will gone. There are 2 possibility, it is either a new C++ specification or there isn't a compilation rules define for main.cpp in makefile. Later I found that the second option is making more sense on this. I didn't resolve the problem since the makefile is auto generated, if I make modification on it, I'm afraid this will generate another problem and my development time will be drag.
No comments:
Post a Comment