Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Neue Frage C++

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] > 3 < [ 4 ]
020
24.10.2017, 22:06 Uhr
Progger33




C++:
ostream& operator<<(ostream& out,CTeam const& rop){

    out << rop.m_teamName << ":" << "" << rop.m_goalsScoredTotal << rop.m_goalsReceivedTotal<< rop.m_equalTotal<< 3*rop.m_goalsScoredTotal+0*rop.m_goalsReceivedTotal+1*rop.m_equalTotal<<"Tore"<<rop.m_goalsScoredTotal<<":"<<rop.m_goalsReceivedTotal<<endl;
        
        return out;
    }



So besser?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
25.10.2017, 05:58 Uhr
Progger33



Korriegiert,bin auf den Fehler gekommen:

C++:
ostream& operator<<(ostream& out,CTeam const& rop){

        out << rop.m_teamName << ":" << "" << rop.m_winsTotal << rop.m_equalTotal<< rop.m_lostTotal<<" (" << 3*rop.m_winsTotal+1*rop.m_equalTotal<< "Punkte )" << " " <<"Tore"<<rop.m_goalsScoredTotal<<":"<<rop.m_goalsReceivedTotal<<endl;

        return out;
    }


Passt so ao oder?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
25.10.2017, 11:23 Uhr
Progger33



Zum Vergleich der Tabellenplätze implementieren Sie den überladenen Operator <, der true zurückgibt, wenn das Team des linken Operanden besser ist als das Team des rechten, also einen kleineren Tabellenplatz erhält. Er ist wie folgt spezifiziert:  Es wird true zurückgegeben, wenn der linke Operand mehr Punkte hat als der rechte Operand.  Bei gleich vielen Punkten entscheidet die Tordifferenz (Gesamtzahl eigener Tore – Gesamtzahl Gegentore). Wenn der linke Operand eine bessere (höhere) Tordifferenz hat als der rechte, wird ebenfalls true zurückgegeben.  In allen anderen Fällen wird false zurückgegeben

Mein Ansatz:


C++:

bool CTeam::operator< (const CTeam& rop){
    if(this->getTotalPoints()>rop->getTotalPoints()){

        return true;
    }
    if(this->getTotalPoints()== rop.getTotalPoints()){

        int Team1Points = this->m_goalsScoredTotal - this->m_goalsReceivedTotal;
        int Team2Points = rop.m_goalsScoredTotal - rop.m_goalsReceivedTotal;

        if(Team1Points>Team2Points){
            return true;
        }
        else{

            return false;
        }

    }



Bekomme folgende Fehlerescription Resource Path Location Type
base operand of '->' has non-pointer type 'const CTeam' CTeam.cpp /CTeam line 70 C/C++ Problem
Description Resource Path Location Type
passing 'const CTeam' as 'this' argument discards qualifiers [-fpermissive] CTeam.cpp /CTeam line 74 C/C++ Problem

Bitte um hilfe
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
25.10.2017, 13:05 Uhr
ao

(Operator)


Die 1. Fehlermeldung sagt, du versuchst, auf etwas, was kein Pointer ist, den Pfeil-Operator anzuwenden. Das ist einfach zu finden.

Mit der 2. Meldung ist es etwas tricky. Du hast oben im Kopf der operator-Funktion geschrieben "const CTeam & rop", d.h. innerhalb des Funktionskörpers ist rop ein konstantes Objekt, das nicht verändert werden kann. Das heißt, an diesem Objekt dürfen nur Methoden aufgerufen werden, die den Qualifier "const" haben, sonst kann das nicht sichergestellt werden.

So, das Problem ist hier die Methode getTotalPoints. Die sollte eigentlich const sein (laut UML-Diagramm), und dann würde alles passen. Bei dir ist das aber nicht. Die muss im .h-File so beschrieben werden:
unsigned int getTotalPoints() const;

Und im .cpp-File entsprechend.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
25.10.2017, 13:19 Uhr
Progger33




C++:
#ifndef CTEAM_H_
#define CTEAM_H_
#include<iostream>
#include<string>
using namespace std;

class CTeam{
private:
    string m_teamName;
    unsigned int m_winsTotal=0;
    unsigned int m_lostTotal =0;
    unsigned int m_equalTotal= 0;
    unsigned int m_goalsScoredTotal = 0;
    unsigned int m_goalsReceivedTotal=0;

public:
    CTeam(string name = "NoName");
    string getName();
    void addResult(unsigned int goalsScored,unsigned int goalsReceived);
    unsigned int const getTotalPoints();
    friend ostream& operator<<(ostream& out,CTeam const& rop);
    bool operator< (const CTeam& rop);

};

ostream& operator <<(ostream& out,CTeam const& rop);


#endif /* CTEAM_H_ */



bool CTeam::operator< (const CTeam& rop){
    if(this->getTotalPoints()>rop->getTotalPoints()){

        return true;
    }
    if(this->getTotalPoints()== rop.getTotalPoints()){

        int Team1Points = this->m_goalsScoredTotal - this->m_goalsReceivedTotal;
        int Team2Points = rop.m_goalsScoredTotal - rop.m_goalsReceivedTotal;

        if(Team1Points>Team2Points){
            return true;
        }
        else{

            return false;
        }

    }


Was soll ich hier noch korrigieren?
ich peile das net?

Dieser Post wurde am 29.10.2017 um 14:10 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
25.10.2017, 14:49 Uhr
ao

(Operator)


Gib nicht so schnell auf. Du kannst es ruhig länger versuchen als 14 Minuten.

Irgendwas zum Thema const-Methode muss auch in deinen Skripten drinstehen, oder in irgendwelchen Büchern, die du hast.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
026
26.10.2017, 09:43 Uhr
Progger33



Leider komme ich nicht drauf . Tut mir leid .
Ich versuchen einen Tutor oder so in der nächsten Woche zu fragen dann.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
027
26.10.2017, 15:32 Uhr
ao

(Operator)


Ja, frag mal einen Tutor. Ist vielleicht gar nicht so schlecht, wenn die mal ne Rückmeldung kriegen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
028
29.10.2017, 17:21 Uhr
Progger33



Kannst du nicht bitte einfach erklären wie man den Fehler beseitigen könnte ?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
029
29.10.2017, 22:02 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat:

base operand of '->' has non-pointer type



naja d.h du hast versehentlich '->' statt '.' verwendet.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 < [ 4 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: