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

Schreibe einen Kommentar