У меня проблемы с циклической зависимостью в библиотеке с заголовком для C ++, которая не была бы проблемой циклической зависимости при использовании исходных файлов вместо создания всего только заголовка.
Существует четыре файла для двух классов A и B. Каждый класс имеет свой заголовочный файл (например, «A.hpp») и свой файл реализации (например, «A.tpp»).
Таким образом, в исходной библиотеке все будет в порядке со следующим порядком включения и компиляции исходного файла:
Мои файлы структурированы таким образом:
#ifndef A_H
#define A_H
#include "B.hpp"class A { ... };
#include "A.tpp"#endif
#ifndef A_H
#error "Do not include this file directly."#endif
// ... some implementations for A.hpp
#ifndef B_H
#define B_H
class A;
class B { ... };
#include "B.tpp"#endif
#include "A.hpp"#ifndef B_H
#error "Do not include this file directly."#endif
// ... some implementations for B.hpp
Итак, мой вопрос: есть ли решение для разрыва этой необычной циклической зависимости, которая возникает только из-за того, что я использую решение только для заголовков для моей библиотеки?
Задача ещё не решена.