View Full Version : [C++] Passaggio array bidimensionale a operator <<
Salve. Ho un problema di questo tipo:
ofstream & operator <<(ofstream & evento_i_w, data_giorno& dg, eventi e[][dg.c_mm] ) { ...
}
int main(){
...
evento_i_w << e[dg.c_gg][dg.c_mm]; }
Gli errori a compile time sono:
main_prove.cpp:383: error: `std::ofstream& operator<<(std::ofstream&)' must take exactly two arguments;
main_prove.cpp:659: error: no match for 'operator<<' in 'evento_i_w << e[dg.data_giorno::c_gg][dg.data_giorno::c_mm];
Il primo errore mi è chiaro anche se però ho la necessità di utilizzare l'oggetto dg della classe data_giorno come parametro dell'operator.
Il secondo errore no. Spero possiate aiutarmi grazie
tomminno
13-09-2010, 07:59
Salve. Ho un problema di questo tipo:
ofstream & operator <<(ofstream & evento_i_w, data_giorno& dg, eventi e[][dg.c_mm] ) { ...
}
int main(){
...
evento_i_w << e[dg.c_gg][dg.c_mm]; }
Gli errori a compile time sono:
main_prove.cpp:383: error: `std::ofstream& operator<<(std::ofstream&)' must take exactly two arguments;
main_prove.cpp:659: error: no match for 'operator<<' in 'evento_i_w << e[dg.data_giorno::c_gg][dg.data_giorno::c_mm];
Il primo errore mi è chiaro anche se però ho la necessità di utilizzare l'oggetto dg della classe data_giorno come parametro dell'operator.
Il secondo errore no. Spero possiate aiutarmi grazie
Il secondo errore è conseguenza del primo. Non avendo definito l'operatore correttamente il compilatore non ne trova la definizione, da qui l'errore.
Per il primo, come dice il compilatore, gli argomenti devono essere 2, credo che dovresti rifattorizzare il codice se proprio ti serve quell'operatore.
Il secondo errore è conseguenza del primo. Non avendo definito l'operatore correttamente il compilatore non ne trova la definizione, da qui l'errore.
Per il primo, come dice il compilatore, gli argomenti devono essere 2, credo che dovresti rifattorizzare il codice se proprio ti serve quell'operatore.
Scusa Tomminno non per fare il noioso anche perchè non è da me comunque non sapendo cosa significhi "rifattorizzare" ho cercato sul nostro amico Google:
La rifattorizzazione è il procedimento con il quale si prende del codice funzionante e lo si modifica in modo che funzioni meglio.
Di solito, “meglio” significa “più velocemente”, sebbene possa anche significare “che usa meno memoria” oppure “che usa meno spazio su disco” o semplicemente “in modo più elegante”.
Io devo farlo andare e basta questo programma. Che sia elegante e più veloce ci penso in un secondo momento.
Non riesco a capire come risolvere questo problema. Avete qualche idea? Grazie!
tomminno
13-09-2010, 08:53
Io devo farlo andare e basta questo programma. Che sia elegante e più veloce ci penso in un secondo momento.
Non riesco a capire come risolvere questo problema. Avete qualche idea? Grazie!
Quell'operatore accetta solo 2 parametri, c'è poco da fare. Io consigliavo il refactoring proprio per fare in modo di avere il numero di parametri giusto.
Quell'operatore accetta solo 2 parametri, c'è poco da fare. Io consigliavo il refactoring proprio per fare in modo di avere il numero di parametri giusto.
Ok mi sono letto qualcosa circa questo refactoring però sono sempre al punto di partenza. Ho questo array bidimensionale di oggetti e devo per forza di cose passarlo all'operator che a sua volta chiama la funzione di scrittura su file all'interno di una classe.
Ma sono tutti in vacanza? :(
ofstream & operator <<(ofstream & evento_i_w, data_giorno& dg, eventi e[][dg.c_mm] )
Non può avere tre parametri...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.