Se ho ben capito, in C++, una classe dichiarata all'interno elenco dei parametri funzione passa automaticamente al campo di applicazione allegando:dichiarazione di Classe all'interno elenco dei parametri funzione
void f(struct A *p) {}
void g() { A *p; f(p); }
è equivalente a:
struct A;
void f(A *p) {}
void g() { A *p; f(p); }
quale sezione nello standard C++ specifica questo comportamento? Che mi dici di C?
Bene, suppongo che C non segua C++ in questo caso. Visual Studio non compilare questo codice è la modalità C:
void g(struct A { int a; } a);
struct A a; // 'a' uses undefined struct 'A'
L'ultimo esempio non viene compilato in C++. – molbdnilo
Sì, ho dimenticato di notare che C++ non consente la definizione della classe all'interno dell'elenco dei parametri di funzione.Intendevo dire che C non segue C++ in quel caso in cui la dichiarazione di classe all'interno dell'elenco dei parametri 'perde' nello scope di dichiarazione delle funzioni. – igntec