Visualizzazione dei risultati da 1 a 9 su 9

Visualizzazione discussione

  1. #1

    [C++] problemi overload operator== con classe allocata dinamicamente

    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;
    }
    Ultima modifica di MItaly; 03-11-2013 a 13:37

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.