Salve!!
Stavo creando delle classi, ma mi sono accorto che vi erano dei problemi,
andando avanti ho scoperto che il problema era nell'operatore di ugualianza
overlodato.
Ho creato una classe Data per provare a risolvere il problema è ho scoperto
che quando istanzio staticamente la classe ( senza new ) va tutto bene, ma
se la istanzio dinamicamente ( con new ) l'operatore non da mai l'ugualianza,
a meno che non stia confrontando la medesima stessa classe.
Il codice della classe Data e del suo utilizzo e giù.
Come si può risolvere questo problema???
Grazie!!!
codice:
#include <cstdlib>
#include <iostream>
using namespace std;
class Data{
public:
int dd;
int mm;
int yy;
Data( int giorno, int mese, int anno );
~Data();
bool operator==( const Data& right );
};
Data::Data( int giorno, int mese, int anno ){
if( giorno < 1 && giorno > 31 ){
giorno = 1;
}
if( mese < 1 && mese > 12 ){
mese = 1;
}
if( anno < 1 ){
anno = 1;
}
dd = giorno;
mm = mese;
yy = anno;
}
Data::~Data(){}
bool Data::operator==( const Data& right ){
return( dd == right.dd && mm == right.mm && yy == right.yy );
}
int main(){
Data dat1 = Data( 15, 7, 1950 );
Data dat2 = Data( 15, 7, 1950 );
if( dat1 == dat2 ){
cout << " uguali " << endl;
}else{
cout << " diversi " << endl;
}
Data* dat3 = new Data( 26, 10, 2013 );
Data* dat4 = new Data( 26, 10, 2013 );
if( dat3 == dat4 ){
cout << " uguali " << endl;
}else{
cout << " diversi " << endl;
}
if( dat3 == dat3 ){
cout << " uguali " << endl;
}else{
cout << " diversi " << endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}