Vergleich von 2 Objekten gleicher Klasse (überschreiben = = - operator) in c++
Ich bin neu in c++ (kommt von Java und C#), und ich bin versucht zu überschreiben, der = = - operator in einer meiner Klassen, damit ich sehen kann wenn ich 2-Objekt, das den gleichen Wert für eine gegebene Eigenschaft. Ich habe seit ein paar googeln und versuchen etwas zu machen, was funktioniert. Was ich brauche, ist für den = = - operator TRUE zurück, wenn 2 Objekte haben die gleiche _name
text.
Hier ist die header-Datei:
//CCity.h -- city class interface
#ifndef CCity_H
#define CCity_H
#include <string>
class CCity
{
friend bool operator ==(CCity& a, CCity& b)
{
bool rVal = false;
if (!(a._name.compare(b._name)))
rVal = true;
return rVal;
}
private:
std::string _name;
double _x; //need high precision for coordinates.
double _y;
public:
CCity (std::string, double, double); //Constructor
~CCity (); //Destructor
std::string GetName();
double GetLongitude();
double GetLatitude();
std::string ToString();
};
#endif
In meiner main () - Methode:
CCity *cit1 = new CCity("bob", 1, 1);
CCity *cit2 = new CCity("bob", 2, 2);
cout<< "Comparing 2 cities:\n";
if (&cit1 == &cit2)
cout<< "They are the same \n";
else
cout << "They are different \n";
delete cit1;
delete cit2;
Problem ist, dass mein code in der friend bool operator ==
block wird nie ausgeführt. Ich habe das Gefühl, ich mache etwas falsch, entweder wie ich bin, erklärt, dass Betreiber, oder wie verwende ich es.
InformationsquelleAutor CurtisHx | 2013-02-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
&
nimmt die Adresse an (Sie verglichen Zeiger), wenn Sie wirklich wollen, zu dereferenzieren mit*
:Sowieso, es ist absolut keine Punkt-zu-verwenden von Zeigern hier, geschweige denn dummen.
Hier ist, wie es Aussehen würde, ohne Sie (der richtige Weg):
Auch, wie WhozCraig erwähnt, betrachten die Verwendung von const-ref-Parameter für Ihre
operator==
Funktion, da es sollte nicht ändern Sie die Argumente.Ah. Nun sehe ich. Ich war (versucht) zu übergeben-Zeiger auf ==. Und ja, ich hätte den Weg bekommen, ohne mit Zeigern, aber ich brauchte, um das == in anderen Orten in meinem code wo ich mit dynamic memory und Zeiger. Danke.
InformationsquelleAutor Pubby
Mit diesem code:
Sie einen Vergleich der Zeiger auf den Zeiger auf die City Instanzen.
Du willst so etwas wie dieses:
InformationsquelleAutor Vaughn Cato