У меня проблема с использованием списка смежности графической библиотеки Boost.Кажется, это проблема циклической зависимости: у меня есть typedef T шаблона, который использует некоторый класс A. Кроме того, A хранит указатель на объект типа T. Теперь компилятор сообщает мне, что T не называет тип.
Вот выдержки из моих более конкретных файлов:
//graphdefinitions.hpp
#include "lane.hpp"
#include "tie.hpp"
typedef boost::adjacency_list<boost::listS, boost::listS,
boost::directedS, Tie, Lane> Map;
typedef boost::graph_traits<Map>::edge_descriptor edge_descriptor;
//lane.hpp
#include "graphdefinitions.hpp"
class Lane {
...
edge_descriptor *left, *right;
};
//tie.hpp
//no important includes here
class Tie {
...
};
Как мне решить эту проблему порядка зависимости / включения?
ДРУГОЕ РЕДАКТИРОВАНИЕ: у меня только что была идеятип edge_descriptor может быть примитивным, как int.Это решило бы проблему, потому что я мог бы заменить edge_descriptors Lane на простые int-переменные и, таким образом, мог бы удалить включение graphdefinitions.hpp внутри tie.hpp.К сожалению, моя идея была безумной *, и я должен найти другое решение.Типы Edge_descriptor, кажется, существуют по причине ...