У меня есть шаблон Вершины в vertex.h. На моем графике.:Что делает этот «декларант недействительным»? C++
20 template<class edgeDecor, class vertexDecor, bool dir>
21 class 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 };
И НКУ говорит:
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
Я знаю, что это, вероятно, еще один нуб вопрос, но я буду признателен за любую помощь.
Возможно, это не связано с этой проблемой, но вы уверены, что хотите «= новый Vertex (INT_MAX)»? Возможно, вы имели в виду «вершину», некапитализированную (что я предполагаю, это typedef)? Также Vertex <...> действительно имеет ctor с указателем вершин/вершин? –