Compiler fehler bei eclipse



  • Was machst du hier genau ? Bitte um Erklärung

    goalsReceived( m_lostTotal );
    


  • goalsReceived()
    

    ist eine Funktion, die einen unsigned int zurück gibt. Einfachshalber habe auch ein unsigned int übergeben und in Deiner Funktion den naheliegendsten Wert genommen. Es wird also ganz simpel m_lostTotal wieder zurück gegeben.



  • Ich weiss nicht was ihr jetzt denkt ,aber ich glaube ich habe die addresult Methode jetzt so richtig ?

    Passt es ?

    /*
     * CTeam.cpp
     *
     *  Created on: 21.10.2017
     *      Author: Medion
     */
    #include<iostream>
    using namespace std;
    #include<string>
    #include"CTeam.h"
    
    CTeam::CTeam(string name ){
    
    	m_teamName = name;
    }
    
    std::string CTeam::getName(){
    	return m_teamName;
    
    	}
    
    void CTeam::addResult(unsigned int goalsScored,unsigned int goalsReceived){
    
    	if(goalsScored>goalsReceived &&  m_goalsScoredTotal>m_goalsReceivedTotal){
    
    		m_winsTotal += 1;
    
    	}
    	if(goalsScored<goalsReceived &&  m_goalsScoredTotal<m_goalsReceivedTotal  ){
    
    			m_lostTotal += 1;
    
    		}
    	if(m_goalsScoredTotal==m_goalsReceivedTotal && goalsScored== goalsReceived){
    
    				m_equalTotal += 1;
    			}
    
    }
    


  • Ist immerhin fehlerfrei.



  • 😃 Aber wie ist es mit der Logik ?
    Passt die auch ?
    Wenigstens ab und zu könnt ihr doch mal auch Tipps geben oder ?



  • Es wurden auch in den anderen Threads Tipps gegeben, als Ergebnis bist Du dann gekommen und meintest, da hier sowieso nichts passiert, soll gar nicht bei der Aufgabe geholfen werden, sondern wenigstens nur die Fehlermeldungen weg sein.

    So sehe ich das jedenfalls.



  • Na gut .

    Alles klar danke trotzdem .
    Wenigstens bei den Fehlern geholfen .



  • Wenn Euch die Sache zu hoch ist, dann schreibt doch erst mal nur ein paar kleine Funktionen, um die wenigstens zu beherrschen. Dann könnt Ihr ja ne kleine Klasse schreiben etc. Halt Sachen, die man selbst überlegt hat, damit man nicht da steht, was meint der denn jetzt mit dieser Aufgabe?



  • Ok alles Klar



  • Genau lemon . Er soll nur ein eigenes Programm machen und seine eigenen Übungsaufgaben gar nicht machen 😃
    Echt toller Vorschlag.
    Und wofür ist dann das Forum da ?



  • Wenn die Übungsaufgabe in Summe zu schwer ist, das ich nicht mal die Hinweise anderer verstehe (geht ja nicht nur um diesen Thread) würde ich einzelne Bereiche in kleine selbst gestellte Aufgaben aufteilen, bis ich diese beherrsche. Dann kann ich die Erkenntnisse zusammenfügen, bis die Aufgabe lösbar ist.

    Ich würds jedenfalls so machen. Ist kein Allgemeinrezept. Du kannst ja gerne anders an die Sache rangehen. Zeige es doch Baby33 und den anderen aus dem Kurs, wie man es macht.



  • 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 diese Fehler nicht weg ?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

    Header sieht so aus:

    #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_ */
    

    Edit durch Arcoth: Code-Tags repariert.



  • sorry cpp vergessen

    [code="cpp"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;
    }

    }[/code]



  • Ist das jetzt das Gespenst der Digitalisierung?

    Gott sei uns gnädig 🙄



  • Weißt du wo der Fehler liegt , damit der Compiler das schluckt ?



  • Ja!

    bool CTeam::operator< (const CTeam& rop){
        if(this->getTotalPoints()>rop->getTotalPoints()){ // <-- Fehler
            return true;
        }
    
        // ...
    }
    

    Schau dir diese Zeile genau an (im Vergleich zu den folgenden Zeilen).



  • Wenn ich this. Und rop.

    schreibe , geht der Fehler auch nicht weg ?



  • Du hast da zwei Probleme:

    class foo{
    public:
      void a(){}
      void b() const {} // const member function!
    };
    
    void func(const foo& f) {
      f->a(); // geht nicht. f ist kein Zeiger.
      f.a();  // geht auch nicht. a ist nicht const (aber f ist const foo&)
      f.b();  // ok
    }
    
    int main() {
      foo f;
      func(f);
    }
    

    Der Fehler in Z. 8 ist offensichtlich.
    Der andere Fehler ist etwas subtiler und hängt mit der sog. const correctness zusammen.

    Ich traue mir nicht zu, Dir const correctness zu erklären.



  • Ich komme ehrlich gesagt auch trotzdem nicht auf den Fehler .
    Zu schwer für mich 😃


Anmelden zum Antworten