Учитывая следующие классы:Не удалось разрешить циклическую зависимость
// 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;
};
Компилятор дает мне ошибки:
undefined reference to 'Child1::doSomething(MyClass const&)'
Та же ошибка печатается для других doSomething(..)
функций.
Я уверен, что есть некоторая ошибка в включении файлов (я использую include guard для каждого заголовочного файла !!). Мои вопросы: где я должен включать соответствующие файлы и где мне нужно форвардное объявление?
Пожалуйста, проверьте свои файлы cpp, и если они даже скомпилированы, добавьте еще один код, чтобы мы могли видеть полную картину того, что у вас есть. –