Originariamente inviato da shodan
codice:
Qualcosa a,b;
if (a == b) { azione; }
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".

codice:
Oggetto *o1 = new Oggetto("ciao");
Oggetto *o2 = new Oggetto("ciao");

if(o1 == o2){
	cout << "Uguali" << endl;
}else{
	cout << "Diversi" << endl;
}
O meglio: c'è un altro modo per farlo?
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);
}