Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
In C++, le struct e le classi sono quasi totalmente identiche, solo che le classi hanno default scope "private" mentre le struct sono default "public". Fine.
poi se volessi stampare a video il tipo nodo? ho provato questo
Codice sorgente - presumibilmente C/C++
void operator << (nodo a){
cout<<a.idUtente;
cout<<a.richiesta;
}
ma evidentemente non va bene.
L'operatore << è binario, quindi per forza di cose deve prendere due parametri
quindi intanto sarà
Codice sorgente - presumibilmente C/C++
QUALCOSA operator << (QUALCOSA, QUALCOSA2)
{
...
}
come si fa a capire cos'è quel qualcosa? Beh basta guardare il codice più banale del mondo
Codice sorgente - presumibilmente Plain Text
cout << "Hello world!" << "\n";
Ho usato "\n" al posto di endl per semplificare la spiegazione ma le cose non cambiano in quel caso.
In pratica quella riga in realtà viene vista dal compilatore come:
Codice sorgente - presumibilmente Plain Text
(cout << "Hello world!") << "\n"
(Si noti che l'operatore <<, come +, - e molti altri è associativo a sinistra)
A questo punto è ovvio che il risultato non può essere void, altrimenti (void) << "\n" avrebbe poco senso.
Invece ha senso che "\n" venga mandato a sua volta sullo stesso stream, e cioè cout.
E quindi vuol dire che il risultato della parentesi interna (cout << "Hello world!") è cout, e cioè il tipo di ritorno è std::ostream&
Poiché cout << "Hello world!" è un'espressione binaria, e a destra ha una stringa, a sinistra ha ancora cout, il tipo della funzione in questo caso sarà:
std::ostream&operator<<(std::ostream&out, node& n)/* o meglio, std::ostream& operator<<(std::ostream&out, const node& n), ma mi sa che all'università non te lo dicono :P*/
{
out<< n.idUtente<< n.richiesta;
return out;
}
O una cosa simile, insomma formatta l'output a tuo piacimento.
Ricorda quel return alla fine, serve per permettere la concatenzione di più <<.
Ultima modifica effettuata da lumo il 21/06/2013 alle 20:47