Probleme mit objekten in pair



  • hallo leute, bei mir kommt immer folgender Fehler:

    [C++ Fehler] _pair.h(48): E2285 Keine Übereinstimmung für 'Any::Any(const Any)' gefunden
    

    müsste das aber nich so gehen?

    class Any
    {
     public:
     Any();
     Any(int z){y=z;}
     Any(Any& data){y=data.y;}    //copy ctor
     Any& operator=(Any& data){y=data.y;return *this;}
     //Any& operator=(int z){y=z;return *this;}
     void GetIt()const{cout<<y<<endl;}
     bool operator ==(Any& c){return y==c.y;}
     bool operator <(Any& c){return y<c.y;}
     friend bool operator==(Any &c, Any &d){return c.y==d.y;}
     friend bool operator<(Any &c,Any &d){return c.y<d.y;}
     private:
     int y;
    
    };
    int main(int argc, char* argv[])
    {
    
     pair<string,int> myPair("Test",10);  //test
     pair<Any,int> myObPair(Any(5),10);
    
     getch();
            return 0;
    }
    


  • Dein Compiler kann const hinzufügen, jedoch nicht wegnehmen. Deshalb sollte dein Copy-Konstruktor seinen Parameter als const definieren.



  • angebracht wäre es auch, wenn du die ganzen operatoren mit const-parametern aufrufst... ist einfach besserer programmierstil, da du die übergebenen objekte nicht modifizieren willst 🕶


Anmelden zum Antworten