2012-04-14 13 views
3

ich die folgende Klasse geschrieben habenAngeben von Standardparameter C++

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

Und die Funktion doJob ist wie

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

Wenn ich kompilieren, erhalte ich die folgende Fehler

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

Sicherlich ist es ein Problem mit der Standard-Parameter-Spezifikation. Also, was ist das Problem mit dem Prototyp?

Antwort

5

Sie brauchen nicht den Standardwert

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

kann nur

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

sein, neu zu definieren, wie Sie das Argument mehr als einmal nicht definieren müssen.

+3

Ich nehme das Problem mit "Sie brauchen nicht" und "kann einfach sein" oben. Sie können den Standardwert nicht neu definieren, und die erste Zeile _must_ muss in die zweite Zeile geändert werden. – Shep

+0

danke für die antwort .. –

+0

ya habe es .............. –

4

Setzen Sie den Standard in der Deklaration (dh innerhalb class worker in Ihrem Beispiel), aber nicht in der Definition, z. Code einfach:

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

danke für die antwort .. –

1

int worker::doJob(int type,int time = 0) Sie einen Fehler geben, sollten Sie nur einmal Ihr Standardargument deklarieren.

+0

danke für die antwort .. –