Ich habe Vertex Vorlage in vertex.h. Von meinem graph.h:Was macht diesen "Deklarator ungültig"? C++
die ich in meiner Diagrammschablone verwende.
Ich habe die Vertex-Vorlage in meinem Graph erfolgreich verwendet, gebe Zeiger auf Scheitelpunkte usw. zurück. Jetzt versuche ich zum ersten Mal ein Vertex-Objekt zu deklarieren und zu instanziieren, und GCC sagt mir, dass mein 'Deklarator' ist 'ungültig'. Wie kann das sein?
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 };
Und gcc sagt:
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
Ich weiß, diese Frage wahrscheinlich eine andere Noob ist, aber ich werde jede Hilfe dankbar.
Wahrscheinlich für dieses Problem nicht verwandt, aber sind Sie sicher, dass Sie möchten, dass „= new Vertex (INT_MAX)“? Hast du vielleicht "unkapitalisiert" gemeint (was ich für ein Typdef halte)? Hat Vertex <...> wirklich einen ctor, der einen Vertex/Vertex-Zeiger nimmt? –