Вызов функции без параметра, когда параметр по умолчанию уже определен

Прошло много времени с тех пор, как я писал на C++, и я не могу найти решение моей проблемы в Интернете, поэтому этот вопрос:

У меня есть класс, где я хочу определить функцию с параметром по умолчанию: Run (par = "default")

class.h содержит:

class Test { public : void Run(QString par="default");};

class.cpp содержит:

void Test::Run(QString par="default") { ... };

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

Test test;
test.Run()

7: ошибка: неопределенная ссылка на `Test::Run()'

Я бы предпочел не использовать перегрузку функций.

Я пытался удалить значение по умолчанию только в.cpp, но ошибка компилятора осталась.

Что я здесь забываю? Я компилирую в QT используя GCC.

1 ответ

Решение

Если вы объявляете параметр по умолчанию, вы устанавливаете его только в объявлении класса. В определении вы оставляете это пустым.

class Test { public : void Run(QString par="default");};
void Test::Run(QString par) { ... };

все должно быть в порядке

Другие вопросы по тегам