Ошибка: параметр по умолчанию задан для параметра 1 - PullRequest
3 голосов
/ 25 мая 2010

Вот мое определение класса:

class MyClass {
public:
   void test(int val = 0);
}

void MyClass::test(int val = 0) {
   //
}

Когда я пытаюсь скомпилировать этот код, я получаю ошибку: «параметр по умолчанию задан для параметра 1»

Это просто простая функция, я не знаю, что не так. Я использую Eclipse + MinGW.

Ответы [ 3 ]

8 голосов
/ 25 мая 2010

Формально вы можете указать аргумент по умолчанию, где хотите, но вы можете сделать это только один раз для параметра. Даже если значение одинаково, оно должно быть указано либо в объявлении функции, либо в определении, но не в обоих.

Конечно, если объявление находится в заголовочном файле (а определение в файле реализации), здравый смысл говорит, что аргумент по умолчанию должен быть указан в заголовочном файле, чтобы все единицы перевода могли «видеть» это.

2 голосов
/ 25 мая 2010

Не существует спецификации типа вашей переменной. Это предназначено?

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

0 голосов
/ 25 мая 2010

Вам не нужно (и не следует) повторять значение по умолчанию в определении функции. Это требуется только в декларации.

...