Operatorüberladung



  • Hallo, ich hätte da ein Problem mit einer Operatorüberladung.
    Ich möchte einfach diesen Methode "getTotalPoints()" aufrufen in meiner Operatorüberladung. Um denn Wert daraus Auszulesen. Dummerweise will er das so nicht annehmen. Ich vermute das es was mit dem const auf sich hat.
    (die const waren alle vorgegeben)
    Kann mir jemand erklären warum er das nicht akzeptiert ? 🙂

    Fehlercode
    error: passing 'const CTeam' as 'this' argument of 'const unsigned int CTeam::getTotalPoints()' discards qualifiers [-fpermissive]
    rop.getTotalPoints();

    Teil vom UML das geg. war:

    +<<friend>> operator <<(out:ostream&,rop:CTeam const&): ostream&
    const unsigned int getTotalPoints();

    Header

    friend ostream& operator<<(ostream& out,const CTeam& rop);
    const unsigned int getTotalPoints();
    

    Methode(cpp)

    ostream& operator<<(ostream& out,const CTeam& rop)
    {
    	out<<rop.m_teamName<<endl;
    	out<<rop.m_winsTotal<<" "<<rop.m_equalTotal<<" "<<rop.m_lostTotal;
    	rop.getTotalPoints();// Fehlerquelle 
    
    return out;
    
    }
    

    get Methode(cpp)

    const unsigned int CTeam::getTotalPoints()
    {
    	return ((m_winsTotal*3)+m_equalTotal);
    }
    

  • Mod

    Die Signatur deiner getTotalPoints soll wohl eher

    unsigned int getTotalPoints() const;
    

    sein. Nicht der Rückgabewert der Methode soll const sein (das wäre ziemlich sinnlos), sondern die Methode selbst soll das Objekt nicht verändern können (und somit auf konstanten Objekten aufrufbar sein).



  • Vielen Dank jetzt hab ich das auch mal verstanden 🙂


Log in to reply