Почему C ++ не допускает это значение по умолчанию? - PullRequest
2 голосов
/ 23 марта 2010

Почему в GCC здесь не разрешен параметр по умолчанию?

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

Это вывод, который я получаю:

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)’

Кто-нибудь может понять, почему я это получаю?

Ответы [ 3 ]

8 голосов
/ 23 марта 2010

Вы, кажется, уже объявили функцию (включая параметр по умолчанию) в graph.h, строка 36. Не повторяйте значение по умолчанию в реализации функции, достаточно указать его один раз в объявлении.

2 голосов
/ 23 марта 2010

аргументы по умолчанию должны быть указаны только в объявлении вашего метода, а не в определении

2 голосов
/ 23 марта 2010

Вы указали один из параметров шаблона:

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

Измените его для соответствия:

Graph<edgeDecor,vertexDecor,dir> Graph<edgeDecor,vertexDecor,dir>::
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...