У меня есть шаблон Vertex в vertex.h. Из моего графика.h:
20 template<class edgeDecor, class vertexDecor, bool dir>
21 class Vertex;
, который я использую в своем шаблоне Графа.
Я успешно использовал шаблон Vertex в своем графике, возвращаю указатели на вершины и т. Д. Теперь я впервые пытаюсь объявить и создать экземпляр объекта Vertex, и gcc сообщает мне, что мой «объявлений» есть недействительным'. Как это может быть?
81 template<class edgeDecor, class vertexDecor, bool dir>
82 Graph<edgeDecor,int,dir> Graph<edgeDecor,vertexDecor,dir>::Dijkstra(vertex s, bool print = false) const
83 {
84 /* Construct new Graph with apropriate decorators */
85 Graph<edgeDecor,int,dir> span = new Graph<edgeDecor,int,dir>();
86 span.E.reserve(this->E.size());
87
88 typename Vertex<edgeDecor,int,dir> v = new Vertex(INT_MAX);
89 span.V = new vector<Vertex<edgeDecor,int,dir> >(this->V.size,v);
90 };
И gcc говорит:
graph.h: In member function ‘Graph<edgeDecor, int, dir> Graph<edgeDecor, vertexDecor, dir>::Dijkstra(Vertex<edgeDecor, vertexDecor, dir>, bool) const’:
graph.h:88: error: invalid declarator before ‘v’
graph.h:89: error: ‘v’ was not declared in this scope
Я знаю, что это, вероятно, еще один вопрос, но я буду признателен за любую помощь.