Wie ich verstehe, in C++, eine Klasse in Funktion Parameterliste deklariert automatisch auf den umgebenden Gültigkeitsbereich geht:Klassendeklaration innerhalb Funktion Parameterliste
void f(struct A *p) {}
void g() { A *p; f(p); }
entspricht:
struct A;
void f(A *p) {}
void g() { A *p; f(p); }
Was Abschnitt im C++ - Standard gibt dieses Verhalten an? Was ist mit C?
Nun, ich denke, C folgt in diesem Fall nicht C++. Visual Studio nicht diesen Code kompilieren C-Modus:
void g(struct A { int a; } a);
struct A a; // 'a' uses undefined struct 'A'
Ihr letztes Beispiel kompiliert auch nicht in C++. – molbdnilo
Ja, ich habe vergessen zu beachten, dass C++ keine Klassendefinition innerhalb der Funktionsparameterliste erlaubt.Ich meinte, dass C nicht C++ in dem Fall folgt, in dem die Klassendeklaration innerhalb der Parameterliste in den Funktionsdeklarationsbereich "leckt". – igntec