void foo(type * p); void foo(type p[]); in diesem Fall ja, die Declaration ist dieselbe keine Überladung (C++) nun nimmt mein Compiler (gcc 4.2.0) auch den Code struct node {}; struct edge { int id; }; struct graph { node V[]; edge E[]; }; man kann dann über graph()->E->id zugreifen also scheint dass auch hier diese beiden Schreibweisen gleich sind. Auch wenn mir jetzt diese zum ersten Mal (in 3 Jahren begegnet ist) Ist es etwas neues in 4.2.0? grüsse, daniel
War in C schon immer so: E[0] <=> *(E+0) <=> *E folglich E[0].id <=> (*E).id <=> E->id
daniel wrote: > void foo(type * p); > void foo(type p[]); > > in diesem Fall ja, die Declaration ist dieselbe > keine Überladung (C++) > > nun nimmt mein Compiler (gcc 4.2.0) auch den Code > struct node {}; > struct edge { > int id; > }; > struct graph { > node V[]; > edge E[]; > }; > > man kann dann über graph()->E->id zugreifen Kannst du auch ein objekt vom Typ struct graph anlegen? Deklarieren kann man schnell mal was, aber um eine Variable zu definieren, muss der Compiler die größe des Objektes kennen. Mit den [] wird er sich dabei schwertun, denn das sind Arrays und keine Pointer.
Bei so manch einem C++ Compiler ist es nicht dasselbe. Die Typinformation wird grundsätzlich immer "bis zum Schluss" mitgeführt und es kann ggf. ein cast nötig werden. Das müsste sonst gehen:
1 | char cp[]=NULL; |
2 | char *p=NULL; |
>Kannst du auch ein objekt vom Typ struct graph >anlegen? >Deklarieren kann man schnell mal was, aber um eine >Variable zu definieren, muss der Compiler die >größe des Objektes kennen. Mit den [] wird er >sich dabei schwertun, denn das sind Arrays und >keine Pointer. jau, ich hab ein graph Objekt angelegt und sogar über es auf E zugegriefen. g++ ist der Compiler mit dem ich am meisten Erfahung habe, und mir ist es auch aufgefallen, dass die Fehler manchmal erst bei Benutzung von Funktion/Objekt auftretten. gruss, daniel
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.