2012-04-14 2 views
3

я написал следующий классЗадание параметров по умолчанию C++

class worker 
{ 
    int action; 
    int doJob(int type,int time = 0); 
    public: 
    int call(); 
} 

и функция doJob подобна

int worker::doJob(int type,int time = 0) 
{ 
      ....code here 
} 

Когда я компиляции, я получаю следующую ошибку

error: the default argument for parameter 1 of 'int worker::doJob(int, int)' has not yet been parsed 

Конечно, это проблема со спецификацией параметров по умолчанию. Так в чем проблема с прототипом?

ответ

5

Вам не нужно переопределить стандартное значение

int worker::doJob(int type,int time = 0)

может быть просто

int worker::doJob(int type,int time)

Как вам не нужно определить аргумент более чем один раз.

+3

Я беру вопрос с «вам не нужно» и «может быть просто» выше. Вы не можете переопределить значение по умолчанию, а первая строка _must_ будет изменена на вторую строку. – Shep

+0

ответ на этот вопрос .. –

+0

ya получил его .............. –

4

Поместите значение по умолчанию в декларацию (то есть внутри class worker в вашем примере), но не в определении, например. код просто:

int worker::doJob(int type,int time) 
{ /* your code here */ } 
+0

ответ на этот вопрос .. –

1

int worker::doJob(int type,int time = 0) дает вам сообщение об ошибке, вы должны объявить только ваш аргумент по умолчанию один раз.

+0

спасибо за ответ. –

Смежные вопросы