Given following classes:
// myClass.hpp
class Child1;
class Child2;
class MyClass {
public:
virtual void doSomething (const MyClass&) const = 0;
virtual void doSomething (const Child1&) const = 0;
virtual void doSomething (const Child2&) const = 0;
};
// child1.hpp
#include "myClass.hpp"
class Child1 : public MyClass {
public:
virtual void doSomething (const MyClass&) const override;
virtual void doSomething (const Child1&) const override;
virtual void doSomething (const Child2&) const override;
};
// child2.hpp
#include "myClass.hpp"
class Child2 : public MyClass {
public:
virtual void doSomething (const MyClass&) const override;
virtual void doSomething (const Child1&) const override;
virtual void doSomething (const Child2&) const override;
};
The compiler gives me the errors:
undefined reference to 'Child1::doSomething(MyClass const&)'
The same error is printed for the other doSomething(..)
functions.
I'm sure there is some mistake in including files (I use include guards for every header-file!!). My questions are: Where do I have to include the corresponding files and where do I need forward declaration?