2 Stimmen

Warum lässt C++ diesen Standardwert nicht zu?

Warum lässt der GCC hier keinen Standardparameter zu?

 template<class edgeDecor, class vertexDecor, bool dir>
 Graph<edgeDecor,int,dir> Graph<edgeDecor,vertexDecor,dir>::Dijkstra(vertex s, bool print = false) const
 {

Dies ist die Ausgabe, die ich erhalte:

graph.h:82: error: default argument given for parameter 2 of ‘Graph<edgeDecor, int, dir> Graph<edgeDecor, vertexDecor, dir>::Dijkstra(Vertex<edgeDecor, vertexDecor, dir>, bool)’
graph.h:36: error: after previous specification in ‘Graph<edgeDecor, int, dir> Graph<edgeDecor, vertexDecor, dir>::Dijkstra(Vertex<edgeDecor, vertexDecor, dir>, bool)’

Kann jemand sehen, warum ich diese Meldung erhalte?

8voto

sth Punkte 210180

Sie haben die Funktion (einschließlich des Standardparameters) offenbar bereits in graph.h , Zeile 36. Wiederholen Sie den Standardwert nicht in der Funktionsimplementierung, es genügt, ihn einmal in der Deklaration anzugeben.

2voto

GManNickG Punkte 476445

Sie haben einen der Parameter der Vorlage angegeben:

Graph<edgeDecor,int,dir> Graph<edgeDecor,vertexDecor,dir>::
                ^^^

Ändern Sie es so, dass es passt:

Graph<edgeDecor,vertexDecor,dir> Graph<edgeDecor,vertexDecor,dir>::

2voto

f4. Punkte 3796

Standardargumente dürfen nur in der Deklaration Ihrer Methode angegeben werden, nicht in der Definition

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X