Una domanda: ho provato a fare l'override dell'operatore ==. Perché se provo a farlo su due puntatori a oggetto (o meglio con due oggetti creati con la "new") non funziona? Mi restituisce sempre "diversi".Originariamente inviato da shodan
codice:Qualcosa a,b; if (a == b) { azione; }
O meglio: c'è un altro modo per farlo?codice:Oggetto *o1 = new Oggetto("ciao"); Oggetto *o2 = new Oggetto("ciao"); if(o1 == o2){ cout << "Uguali" << endl; }else{ cout << "Diversi" << endl; }
Posso immaginare che o1 e o2 puntano a indirizzi di memoria diversi, quindi l'uguale mi dovrebbe dare sempre un valore falso, ma pensavo che ridefinendo quell'operatore la cosa funzionasse lo stesso.
La funzione che ho scritto è di questo tipo:
codice:bool Oggetto::operator==(const Oggetto& o){ return (this->arg1==o.arg1 && this->arg2==o.arg2); }

Rispondi quotando