C++ Einführung

Neue Frage »

Auf diesen Beitrag antworten »
progger C++ Einführung

Hallo alle zusammen .

Ich wollte mal jetzt erstmal hier im forum fragen wo genau jetzt die Fehler in meinem header file liegen ?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:

#ifndef CTEAM_H_
#define CTEAM_H_
#include <string>
#include <iostream>
using namespace.std;


class CTeam{

private:
	string m_teamName;
	unsigned int m_winsTotal = 0;
	unsigned int m_equalTotal = 0;
	unsigned int m_goalsScoredTotal = 0;
	unsigned int m_goalsReceivedTotal = 0;

public:

	CTeam::CTeam( string name = "NoName");
	string getName();
	void addResult( unsigned int goalsScored, unsigned int goalsReceived);
    unsigned const int getTotalPoints();

    friend ostream& operator (ostream& out , CTeam::CTeam const& rop);
    bool operator (CTeam::CTeam const& rop);








};






Fehler
Description Resource Path Location Type
Type 'string' could not be resolved CTeam.h /CTeam line 18 Semantic Error

Ich habe das string ja includiert .

Warum wird trotzdem ein fehler angezeigt?
 
Auf diesen Beitrag antworten »
eulerscheZahl

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
#ifndef CTEAM_H_
#define CTEAM_H_
#include <string>
#include <iostream>
using namespace std; //kein Punkt


class CTeam{

private:
	string m_teamName;
	unsigned int m_winsTotal = 0;
	unsigned int m_equalTotal = 0;
	unsigned int m_goalsScoredTotal = 0;
	unsigned int m_goalsReceivedTotal = 0;

public:

	/*CTeam::*/CTeam( string name = "NoName"); //kein SCope Operator innerhalb der Klasse
	string getName();
	void addResult( unsigned int goalsScored, unsigned int goalsReceived);
    unsigned const int getTotalPoints();

    friend ostream& operator >>(ostream& out , CTeam const& rop); //operator angeben, hier brauchst du auch kein ::
//    bool operator (CTeam const& rop); //welchen operator willst du überladen?

};
#endif //das ifndef musst du wieder schließen
Auf diesen Beitrag antworten »
progger

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
#ifndef CTEAM_H_
#define CTEAM_H_
#include <string>
#include <iostream>
using namespace std;


class CTeam{

private:
	string m_teamName;
	unsigned int m_winsTotal = 0;
	unsigned int m_equalTotal = 0;
	unsigned int m_goalsScoredTotal = 0;
	unsigned int m_goalsReceivedTotal = 0;

public:

	/*CTeam::*/CTeam( string name = "NoName");
	string getName();
	void addResult( unsigned int goalsScored, unsigned int goalsReceived);
    unsigned const int getTotalPoints();

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








};




welchen operator willst du überladen? Das rop . Daher habe ich das grösser Zeichen umgedreht verwirrt

Ich habe mal versucht den Konstruktor zu implementieren ,habe allerdings probleme .

Wie soll ich denn den Konstruktor genau implementieren ?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
/*
 * CTeam.cpp
 *
 *  Created on: 28.02.2016
 *      Author: VAIO
 */
#include <iostream>
#include <string>
#include "CTeam.h"

using namespace std;

CTeam::CTeam( string name = "NoName"){

	m_name = name;
}




Es steht nicht genaues dabei verwirrt
Auf diesen Beitrag antworten »
eulerscheZahl

Existiert die Variable m_name? Bei deinem letzten Beitrag hieß sie m_teamName.
 
Auf diesen Beitrag antworten »
progger

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
Es wird ein error für teamName angezeigt ?
Muss ich das irgendwo im Header definieren?
Description	Resource	Path	Location	Type
Symbol 'teamName' could not be resolved	CTeam.cpp	/CTeam	line 15	Semantic Error

#include <iostream>
#include <string>
#include "CTeam.h"

using namespace std;

CTeam::CTeam( string name = "NoName"){

	m_teamName = teamName;
}

string CTeam::getName(){

	return m_teamName;
}




Hier wird mir im Header fehler angezeigt ? Warum

/*CTeam::*/CTeam( string name = "NoName");
Description Resource Path Location Type
after previous specification in 'CTeam::CTeam(std::string)' [-fpermissive] CTeam.h /CTeam line 26 C/C++ Problem
Auf diesen Beitrag antworten »
eulerscheZahl

Im Header darfst du keine Defalut Werte eintragen, wenn ich es richtig in Erinnerung habe. Nur in der cpp Datei.
Die Variable teamName in Zeile 14 wurde nicht definiert.
Auf diesen Beitrag antworten »
progger

Soll ich einfach int teamName;


Im cpp erstellen ?
Auf diesen Beitrag antworten »
eulerscheZahl

CTeam::CTeam( string name = "NoName"){
m_teamName = teamName;
}

Fällt dir da was auf?
Entscheide dich für einen Namen, dann ist alles in Ordnung.
Auf diesen Beitrag antworten »
progger

Leider wird mir immer noch ein Fehler angezeigt

Description Resource Path Location Type
default argument given for parameter 1 of 'CTeam::CTeam(std::string)' [-fpermissive] CTeam.cpp /CTeam line 13 C/C++ Problem

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
#include <iostream>
#include <string>
#include "CTeam.h"

using namespace std;

CTeam::CTeam( string name = "NoName"){ diese Zeile Fehlermeldung

	m_teamName = name;
}

string CTeam::getName(){

	return m_teamName;
}



geschockt
Auf diesen Beitrag antworten »
progger

Ich habe mal die addResult Methode ein wenig programmiert :

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:

#include <iostream>
#include <string>
#include "CTeam.h"

using namespace std;

CTeam::CTeam( string name = "NoName"){

	m_teamName = name;
}

string CTeam::getName(){

	return m_teamName;
}

    unsigned int m_goalsScoredTotal = 0;
	unsigned int m_goalsReceivedTotal = 0;
	unsigned int m_winsTotal = 0;
	unsigned int m_equalTotal = 0;
	unsigned int m_lostTotal = 0;

void CTeam::addResult( unsigned int goalsScored, unsigned int goalsReceived){
	if( goalsScored > goalsReceived){


		m_winsTotal++;


	}

	if( goalsReceived> goalsScored){


		m_lostTotal++;


		}
	else{

		m_equalTotal++;
	}


}



Die übergebenen Parameterwerte werden außerdem im jeweiligen Attribut für die Gesamtzahl der eigenen Tore bzw. der Gegentore aufsummiert.

Was mit dieser Aufgabe genau gemeint ist verstehe ich nicht großes Grinsen

Was muss ich da genau machen ?
Auf diesen Beitrag antworten »
progger

Ich bin mittlerweile ein wenig weiter gekommen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:

#include <iostream>
#include <string>
#include "CTeam.h"

using namespace std;

CTeam::CTeam( string name = "NoName"){

    m_teamName = name;
}

string CTeam::getName(){

    return m_teamName;
}

    unsigned int m_goalsScoredTotal = 0;
    unsigned int m_goalsReceivedTotal = 0;
    unsigned int m_winsTotal = 0;
    unsigned int m_equalTotal = 0;
    unsigned int m_lostTotal = 0;

void CTeam::addResult( unsigned int goalsScored, unsigned int goalsReceived){
    if( goalsScored > goalsReceived){


        m_winsTotal++;


    }

    if( goalsReceived> goalsScored){


        m_lostTotal++;


        }
    if( goalsReceived == goalsScored){
           m_equalTotal++;

    }

m_goalsScoredTotal += goalsScored;
m_goalsReceivedTotal+= goalsReceived;

 };

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


};

 bool CTeam::operator << (CTeam const& rop){

	 cout<<"CTeam@" << "m_winsTotal"<< "Spiele gewonnen  " << " , " <<  "m_equalTotal" << " Spiele unentschieden"<< endl;

 };








Weiss jemand aber wie ich die Ausgabe mithilfe des operators machen kann ?

Weil ich glaube mein Ansatz stimmt nicht so ganz großes Grinsen
Auf diesen Beitrag antworten »
eulerscheZahl

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
#ifndef CTEAM_H_
#define CTEAM_H_
#include <string>
#include <iostream>
using namespace std;

class CTeam{

private:
	string m_teamName;
	unsigned int m_winsTotal;
	unsigned int m_equalTotal;
	unsigned int m_lostTotal;
	unsigned int m_goalsScoredTotal;
	unsigned int m_goalsReceivedTotal;

public:
	CTeam(string name);
	string getName();
	void addResult( unsigned int goalsScored, unsigned int goalsReceived);
    unsigned const int getTotalPoints();

    friend ostream& operator << (ostream& out, const CTeam &rop);
    //bool operator < (const CTeam &rop);
};
#endif


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
#include <iostream>
#include <string>
#include "CTeam.h"

using namespace std;

CTeam::CTeam(string name = "NoName") {
    m_teamName = name;
	m_goalsScoredTotal = 0;
	m_goalsReceivedTotal = 0;
	m_winsTotal = 0;
	m_equalTotal = 0;
	m_lostTotal = 0;
}

string CTeam::getName() {
    return m_teamName;
}


void CTeam::addResult(unsigned int goalsScored, unsigned int goalsReceived){
    if (goalsScored > goalsReceived) {
        m_winsTotal++;
    }
    if (goalsReceived > goalsScored) {
        m_lostTotal++;
    }
    if (goalsReceived == goalsScored) {
           m_equalTotal++;
    }
	m_goalsScoredTotal += goalsScored;
	m_goalsReceivedTotal+= goalsReceived;
 };

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

ostream& operator << (ostream &out, const CTeam &rop) {
	 out<<"CTeam@" << rop.m_winsTotal<< "Spiele gewonnen  " << " , " <<  rop.m_equalTotal << " Spiele unentschieden"<< endl;
};


code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
#include <iostream>
#include "CTeam.h"

using namespace std;

int main() {
	CTeam team1("team 1");
	team1.addResult(3,2);
	cout << team1;
}
Auf diesen Beitrag antworten »
progger

Was hast du denn genau bei der Main da gemacht ?
Auf diesen Beitrag antworten »
eulerscheZahl

Ein Team angelegt, es spielen lassen und dann ausgegeben.
Einfach nur um die Funktionalität zu testen.
Auf diesen Beitrag antworten »
progger

Wenn ich deinen Coden bei mir bei eclipse einbaue ,werden mir viele Fehler angezeigt .

Ich habe die Operator Ausgabe ein wenig erweitert .

Hoffe das stimmt so ?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
#ifndef CTEAM_H_
#define CTEAM_H_
#include <string>
#include <iostream>
using namespace std;


class CTeam{

private:
	string m_teamName;
	unsigned int m_winsTotal = 0;
	unsigned int m_equalTotal = 0;
	unsigned int m_goalsScoredTotal = 0;
	unsigned int m_goalsReceivedTotal = 0;

public:

	/*CTeam::*/CTeam( string name = "NoName");
	string getName();
	void addResult( unsigned int goalsScored, unsigned int goalsReceived);
    unsigned const int getTotalPoints();

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








};





cpp

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:

#include <iostream>
#include <string>
#include "CTeam.h"

using namespace std;

CTeam::CTeam(string name = "NoName") {
    m_teamName = name;
	m_goalsScoredTotal = 0;
	m_goalsReceivedTotal = 0;
	m_winsTotal = 0;
	m_equalTotal = 0;
	m_lostTotal = 0;
}

string CTeam::getName() {
    return m_teamName;
}


void CTeam::addResult(unsigned int goalsScored, unsigned int goalsReceived){
    if (goalsScored > goalsReceived) {
        m_winsTotal++;
    }
    if (goalsReceived > goalsScored) {
        m_lostTotal++;
    }
    if (goalsReceived == goalsScored) {
           m_equalTotal++;
    }
	m_goalsScoredTotal += goalsScored;
	m_goalsReceivedTotal+= goalsReceived;
 };

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

ostream& operator << (ostream &out, const CTeam &rop) {
	 out<<"CTeam@" << rop.m_winsTotal<< "Spiele gewonnen  " << " , " <<  rop.m_equalTotal << " Spiele unentschieden"<< endl;

	 out << "CTeam@"<<  m_goalsScoredTotal << " Tore erzielt " <<" , " << m_goalsReceivedTotal << " " << " Tore kassiert "<< endl;



Fehler :

Description Resource Path Location Type
'm_goalsReceivedTotal' was not declared in this scope CTeam.cpp /CTeam line 42 C/C++ Problem
'm_goalsScoredTotal' was not declared in this scope CTeam.cpp /CTeam line 42 C/C++ Problem
'm_lostTotal' was not declared in this scope CTeam.cpp /CTeam line 13 C/C++ Problem
'm_lostTotal' was not declared in this scope CTeam.cpp /CTeam line 26 C/C++ Problem
'unsigned int CTeam::m_equalTotal' is private CTeam.h /CTeam line 20 C/C++ Problem
'unsigned int CTeam::m_winsTotal' is private CTeam.h /CTeam line 19 C/C++ Problem
after previous specification in 'CTeam::CTeam(std::string)' [-fpermissive] CTeam.h /CTeam line 26 C/C++ Problem
default argument given for parameter 1 of 'CTeam::CTeam(std::string)' [-fpermissive] CTeam.cpp /CTeam line 7 C/C++ Problem
Invalid overload of 'endl' CTeam.cpp /CTeam line 42 Semantic Error
Symbol 'm_goalsReceivedTotal' could not be resolved CTeam.cpp /CTeam line 42 Semantic Error
Symbol 'm_goalsScoredTotal' could not be resolved CTeam.cpp /CTeam line 42 Semantic Error
Symbol 'm_lostTotal' could not be resolved CTeam.cpp /CTeam line 13 Semantic Error
Symbol 'm_lostTotal' could not be resolved CTeam.cpp /CTeam line 26 Semantic Error
within this context CTeam.cpp /CTeam line 40 C/C++ Problem
no return statement in function returning non-void [-Wreturn-type] CTeam.cpp /CTeam line 43 C/C++ Problem
No return, in function returning non-void CTeam.cpp /CTeam line 39 Code Analysis Problem
non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] CTeam.h /CTeam line 19 C/C++ Problem
non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] CTeam.h /CTeam line 20 C/C++ Problem
non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] CTeam.h /CTeam line 21 C/C++ Problem
non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] CTeam.h /CTeam line 22 C/C++ Problem


So viele Fehler großes Grinsen
Auf diesen Beitrag antworten »
eulerscheZahl

Im Header deklarierst du bool operator << (CTeam const& rop);, implementierst es aber nicht.

out << "CTeam@"<< m_goalsScoredTotal
muss (wie oben) rop.m_goalsScoredTotal heißen. Das gilt natürlich auch für die nächste Variable.

edit:
Laut Klassendiagramm sollte es bool operator < sein, nicht <<
Auf diesen Beitrag antworten »
progger

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:

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


class CTeam{

private:
	string m_teamName;
	unsigned int m_winsTotal = 0;
	unsigned int m_equalTotal = 0;
	unsigned int m_goalsScoredTotal = 0;
	unsigned int m_goalsReceivedTotal = 0;

public:

	/*CTeam::*/CTeam( string name = "NoName");
	string getName();
	void addResult( unsigned int goalsScored, unsigned int goalsReceived);
    unsigned const int getTotalPoints();

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








};





#endif /* CTEAM_H_ */




code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
#include <iostream>
#include <string>
#include "CTeam.h"

using namespace std;

CTeam::CTeam(string name = "NoName") {
    m_teamName = name;
	m_goalsScoredTotal = 0;
	m_goalsReceivedTotal = 0;
	m_winsTotal = 0;
	m_equalTotal = 0;
	m_lostTotal = 0;
}

string CTeam::getName() {
    return m_teamName;
}


void CTeam::addResult(unsigned int goalsScored, unsigned int goalsReceived){
    if (goalsScored > goalsReceived) {
        m_winsTotal++;
    }
    if (goalsReceived > goalsScored) {
        m_lostTotal++;
    }
    if (goalsReceived == goalsScored) {
           m_equalTotal++;
    }
	m_goalsScoredTotal += goalsScored;
	m_goalsReceivedTotal+= goalsReceived;
 };

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

ostream& operator << (ostream &out, const CTeam &rop) {
	 out<<"CTeam@" << rop.m_winsTotal<< "Spiele gewonnen  " << " , " <<  rop.m_equalTotal << " Spiele unentschieden"<< endl;

	 out << "CTeam@"<<  rop.m_goalsScoredTotal << " Tore erzielt " <<" , " << rop.m_goalsReceivedTotal << " " << " Tore kassiert "<< endl;
};




Gut jetzt habe ich deutlich weniger fehler :
Description Resource Path Location Type
'm_lostTotal' was not declared in this scope CTeam.cpp /CTeam line 13 C/C++ Problem
'm_lostTotal' was not declared in this scope CTeam.cpp /CTeam line 26 C/C++ Problem
'unsigned int CTeam::m_equalTotal' is private CTeam.h /CTeam line 20 C/C++ Problem
'unsigned int CTeam::m_goalsReceivedTotal' is private CTeam.h /CTeam line 22 C/C++ Problem
'unsigned int CTeam::m_goalsScoredTotal' is private CTeam.h /CTeam line 21 C/C++ Problem
'unsigned int CTeam::m_winsTotal' is private CTeam.h /CTeam line 19 C/C++ Problem
after previous specification in 'CTeam::CTeam(std::string)' [-fpermissive] CTeam.h /CTeam line 26 C/C++ Problem
default argument given for parameter 1 of 'CTeam::CTeam(std::string)' [-fpermissive] CTeam.cpp /CTeam line 7 C/C++ Problem
Symbol 'm_lostTotal' could not be resolved CTeam.cpp /CTeam line 13 Semantic Error
Symbol 'm_lostTotal' could not be resolved CTeam.cpp /CTeam line 26 Semantic Error
within this context CTeam.cpp /CTeam line 40 C/C++ Problem
within this context CTeam.cpp /CTeam line 42 C/C++ Problem
no return statement in function returning non-void [-Wreturn-type] CTeam.cpp /CTeam line 43 C/C++ Problem
No return, in function returning non-void CTeam.cpp /CTeam line 39 Code Analysis Problem
non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] CTeam.h /CTeam line 19 C/C++ Problem
non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] CTeam.h /CTeam line 20 C/C++ Problem
non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] CTeam.h /CTeam line 21 C/C++ Problem
non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default] CTeam.h /CTeam line 22 C/C++ Problem

Auch paar tipps?
Auf diesen Beitrag antworten »
eulerscheZahl

Du hättest auch meinen Header übernehmen sollen.
Habe dir nochmal kommentiert, was ich geändert habe:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
#ifndef CTEAM_H_
#define CTEAM_H_
#include <string>
#include <iostream>
using namespace std;


class CTeam{

private:
	string m_teamName;
	unsigned int m_winsTotal; //Initialisierung kommt in die .cpp, nicht in den header
	unsigned int m_equalTotal;
	unsigned int m_lostTotal; //die Zeile hat gefehlt
	unsigned int m_goalsScoredTotal;
	unsigned int m_goalsReceivedTotal;

public:

	CTeam(string name); //keine default Werte im Header
	string getName();
	void addResult( unsigned int goalsScored, unsigned int goalsReceived);
    unsigned const int getTotalPoints();

    friend ostream& operator << (ostream& out , CTeam const& rop); //du hattest >>
    bool operator < (CTeam const& rop);
};

#endif /* CTEAM_H_ */
Auf diesen Beitrag antworten »
progger

Die AUfgabe geht noch ein wenig weiter

Wie lege ich bei der g) genau diese Teams an ?

Wie macht man das ?
Auf diesen Beitrag antworten »
eulerscheZahl

Wie man ein Team anlegt, hatte ich dir schon gezeigt. Du musst nur noch den Variablennamen und den String ändern.
code:
1:
CTeam fcn("1. FC Nürnberg");
Auf diesen Beitrag antworten »
progger

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:

#include <iostream>
#include "CTeam.h"

using namespace std;


int main(){

	CTeam bayern("Bayern München");
	CTeam bvb("Borussia Dortmund");
	CTeam werder("Werder Bremen");
	bayern.addResult(3,3);
	bayern.addResult(1,4);



};



Irgendwie habe ich das Gefühl ,dass es doch nicht ganz stimmt großes Grinsen
Auf diesen Beitrag antworten »
eulerscheZahl

Da fehlt halt noch die Ausgabe (und deren Formatierung). Ansonsten sehe ich kein Problem.
code:
1:
cout << bayern;
Auf diesen Beitrag antworten »
progger

Und die drei Mannschaften einfach so ausgeben ?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:

#include <iostream>
#include "CTeam.h"

using namespace std;


int main(){

	CTeam bayern("Bayern München");
	CTeam bvb("Borussia Dortmund");
	CTeam werder("Werder Bremen");
	bayern.addResult(3,3);
	bayern.addResult(1,4);
    cout << bayern;
    
    cout << bayern << " , " << bvb << " , " << werder << endl;


};

Auf diesen Beitrag antworten »
eulerscheZahl

oder
code:
1:
2:
3:
cout << bayern;
cout << bvb;
cout << werder;

Das kannst du machen, wie du willst.
Auf diesen Beitrag antworten »
progger

Bei der h) verstehe ich jetzt nicht genau was mit dem linken Operanden gemeint ist und was mit dem rechten ?

Wie bezeichne ich die genau ?
Dann muss ich ja irgendwie eine if Bedingung implementieren.
Auf diesen Beitrag antworten »
eulerscheZahl

DU kannst schreiben
code:
1:
bayern < bvb
, um zu schauen wer mehr Punkte hat.
Dabei ist bayern der linke und bvb der rechte Operand.

Im Code kommst du mit this an den linken und mit rop an den rechten Opernanden.
Auf diesen Beitrag antworten »
progger

Woher weisst du das der linke Operand this ist ?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
bool CTeam::operator < (CTeam const& rop){
	
	if(this > rop){
		return true;
		
		
	}
	
	
	
}


Gleich viele Punkte bedeutet m_equalTotal.

if (this > goalsScored)

Mehr fällt mir im moment nicht zum letzten Teil ein verwirrt
Auf diesen Beitrag antworten »
eulerscheZahl

Das const will er gerade nicht fressen unglücklich
code:
1:
2:
3:
4:
5:
6:
bool CTeam::operator < (CTeam &rop) {
	return this->getTotalPoints() > rop.getTotalPoints();
}

cout << (bayern < bvb) << endl; //1
cout << (bvb < bayern) << endl; //0

Ich habe jetzt nur die Punkte angeschaut, nicht die Tordifferenz. Das soll nur zeigen, wie es prinzipiell geht.
Auf diesen Beitrag antworten »
progger

Kannst du mir erklären was diese Zeile genau macht ?

return this->getTotalPoints() > rop.getTotalPoints();
Auf diesen Beitrag antworten »
eulerscheZahl

this->getTotalPoints() ist die Punktzahl des linken Operanden (also bayern für den Aufruf in Zeile 5).
rop.getTotalPoints() entspricht der Punktzahl des rechten Operanden (bvb).
es steht also da: return 1 > 0 (bvb hat 0 Punkte, weil du nur Bayern gegen den BVB spielen lassen hast, nicht andersrum).
Und das ist true. Also wird eine 1 ins Terminal geschrieben.
Auf diesen Beitrag antworten »
progger

Ich verstehe immer noch nicht so genau warum das linke Bayern ist.

Bayern habe ich doch einfach nur ein team erstellt in der Main großes Grinsen

Greife ich auf die Tordifferenz so zu ?

this pfeil addResult() > rop.addResult();
Auf diesen Beitrag antworten »
eulerscheZahl

Die Funktion wird über eine Klasseninstanz aufgerufen. Mit this kannst du auf das Objekt zugreifen, das die Funktion aufgerufen hat.

addResult ändert die Tordifferenz, du willst sie nur auslesen.
this->m_goalsScoredTotal sind die erzielten Tore von Bayern.
Auf diesen Beitrag antworten »
progger

this->m_goalsScoredTotal > m_receivedGoalsTotal;

In Ordnung ?
Auf diesen Beitrag antworten »
eulerscheZahl

Du musst bei Punktgleichheit die Tordifferenz von this mit der von rop vergleichen. Das hat ein paar Zeilen mehr, als das was du da machst.
Auf diesen Beitrag antworten »
progger

Das ist sau kompliziert für mich . traurig

Soll ich eine if Bedingung erstellen ?
Auf diesen Beitrag antworten »
eulerscheZahl

Du wirst wohl mehr als eine brauchen.
Auf diesen Beitrag antworten »
progger

Ich habe es jetzt mal versucht, der compiler zeigt aber fehler an leider.

Kann also nicht stimmen .

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
bool CTeam::operator < (CTeam const& rop){

	if((this->getTotalPoints()== rop.getTotalPoints())&&(this->getTotalPoints()> m_goalsScoredTotal- m_goalsReceivedTotal ) ){
		return true;


	}



}



Oder ist die Idee nicht ganz falsch?
Auf diesen Beitrag antworten »
eulerscheZahl

Du vergleichst hier die Punkte mit der Tordifferenz, zu was soll das denn führen?
Und es fehlt ein return, wenn das if nicht erfüllt ist.
Auf diesen Beitrag antworten »
progger

Ich hatte damit das versucht .

Wenn der linke Operand eine bessere (höhere) Tordifferenz hat als der rechte, wird ebenfalls true zurückgegeben

Das ist schwer zu realisieren ?

Aber ich merke das ich was falsch gemacht habe.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
bool CTeam::operator < (CTeam const& rop){

	if((this->getTotalPoints()== rop.getTotalPoints())&&(this->getTotalPoints()> m_goalsScoredTotal- m_goalsReceivedTotal ) ){
		return true;


	}
	else {
		return false;
	}



}
Auf diesen Beitrag antworten »
progger

Wie komme ich denn auf die Tordifferenz vom linken und wie zum rechten ?

Das fällt mir als Anfänger ziemlich schwer
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »