return void
-
Kann mir jemand sagen warum bei dieser Methode hier "return void" einen Compilierfehler herbeiruft? Is jetzt nur die Methode, da der gesamte Code zu groß wäre:
void Mobile_Node::show_all(long number) { cout << temp->get_a() << "\n"; number--; if (number==0) { return void; //<-- } Mobile_Node *temp=dynamic_cast<Mobile_Node *> (next); temp->show_all(number); }ERROR's
Compiling: C:\MinGW\Andi\liste.cpp
C:\MinGW\Andi\liste.cpp: In member functionvoid Mobile\_Node::show\_all(long int)': C:\\MinGW\\Andi\\liste.cpp:48: error: expected primary-expression before "void" C:\\MinGW\\Andi\\liste.cpp:48: error: return-statement with a value, in function returning 'void' C:\\MinGW\\Andi\\liste.cpp:48: error: expected;' before "void"
C:\MinGW\Andi\liste.cpp:48: error: declaration does not declare anything
Process terminated with status 1 (0 minutes, 0 seconds)
4 errors, 0 warningsMh, ich glaub es is einfach zuspät....

MfG
Stromberg
-
Weil es "return;" ist und nicht "return void;"
-
Oh, echt...ich hab irgendwie immer gedacht des heißt "return void;" na ja wieder was dazugelernt, aber ich verwende des "return;" eigentlich ja au so selten...

Dankeschön + Gute Nacht.
-
Das einzige was diesbezüglich erlaubt ist und so ähnlich aussieht sind die sog. "void returns":
void a() {} void b() { return a(); }Das vereinfacht einem das Leben beim Programmieren von Templates manchmal enorm, denke dafür wurde es auch gemacht.
-
Was auch cool ist, ist
void MyFunc() { return static_cast<void>(5); }Felix
-
hustbaer schrieb:
Das vereinfacht einem das Leben beim Programmieren von Templates manchmal enorm, denke dafür wurde es auch gemacht.
also, ich glaub ich verstehe schon was dein Code macht, er benutzt das "void" von funktion "a" oder? Also des was "a" zurückgibt. Aber da is doch jetzt kein Unterschied zu:
void a() {} void b() { return; }oder?
@Phoemux
Geht das mit allen Datentypen, z.B. auch mit "string"....also:void MyFunc() { return static_cast<string>("Hallo"); }Aber sowas benötigt man doch eher selten bis nie oder?
MfG
Stromberg
-
Stromberg schrieb:
@Phoemux
Geht das mit allen Datentypen, z.B. auch mit "string"....also:void MyFunc() { return static_cast<string>("Hallo"); }Aber sowas benötigt man doch eher selten bis nie oder?
Ja, geht so weit ich weiß mit allen Datentypen. Das ist für Templates manchmal ganz nützlich. Z.B. bei tr1::function<ReturnTyp(Args)> kann man ja Callable-Objects benutzen, für die static_cast<Type>(OriginalType) gültig ist, d.h. folgendes würde gehen:
int myFunc(int); tr1::function<void(double)> = &myFunc;Für templates ist das ganz nützlich, weil man nicht extra eine partielle Spezialisierung machen muss.
Felix
-
Stromberg schrieb:
@hustbaer
also, ich glaub ich verstehe schon was dein Code macht, er benutzt das "void" von funktion "a" oder? Also des was "a" zurückgibt. Aber da is doch jetzt kein Unterschied zu:void a() {} void b() { return; }oder?
Nicht ganz richtig:
Fkt. a() wird nicht aufgerufen:void a() {} void b() { a(); return; }Bisschen pingelig, aber so ist richtig

Lg
-
Ich würde sagen das ist, sobald a mal nichtmehr leer sind und ein paar Nebeneffekte hat, ein REISEN Unterschied
