Salve gente,
come molti avranno intuito dal titolo, sto piano piano passando da Java a C++, e volendo realizzare un piccolo software che ho fatto in Java, anche in C++, mi trovo di fronte ad alcuni problemini.
Per prima cosa vorrei capire bene come verificare se due oggetti sono uguali. In Java esiste l'operatore equals, che può essere ridefinito, ad esempio come segue:
Ovviamente la classe ClasseDellOggetto, presa in esempio, qui ha due attributi.codice:public boolean equals(Object o) { if (o == null) return false; if (!(o instanceof ClasseDellOggetto)) return false; ClasseDellOggetto o1 = (ClasseDellOggetto) o; return this.campo1==o1.campo1 && this.campo2==o1.campo2; }
Vorrei sapere se c'è un metodo "standard" in C++ per fare la stessa cosa. Ho letto qua e la, che basterebbe verificare se tutti gli attributi di un oggetto sono uguali a quelli di un altro per verificare se sono uguali: è corretto? O c'è dell'altro?
Dal problema dell'equals, scaturisce il problema istanceof: esiste l'analogo in C++?
Come si fa a vedere se un certo oggetto è istanza di una certa classe?
EDIT:
per il momento mi sono limitato a definire una funzione del genere per vedere se due oggetti sono uguali (ovvero se i loro attributi sono uguali):
Pare che funzioni, spero sia corretto come ho fatto.codice:bool MyClass::equals(MyClass *p){ if(p==NULL) return false; return (this->attr1==p->attr1 && this->attr2==p->attr2); }