28.02.2016, 01:41 |
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? |
|
|
|
28.02.2016, 05:58 |
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 |
|
|
28.02.2016, 10:49 |
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
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
|
28.02.2016, 10:53 |
Auf diesen Beitrag antworten » |
eulerscheZahl |
Existiert die Variable m_name? Bei deinem letzten Beitrag hieß sie m_teamName. |
Anzeige |
|
|
28.02.2016, 11:01 |
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 |
28.02.2016, 16:54 |
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. |
28.02.2016, 17:20 |
Auf diesen Beitrag antworten » |
progger |
Soll ich einfach int teamName;
Im cpp erstellen ? |
28.02.2016, 18:16 |
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. |
28.02.2016, 19:09 |
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;
}
|
|
|
28.02.2016, 19:35 |
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
Was muss ich da genau machen ? |
03.03.2016, 12:08 |
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
|
04.03.2016, 08:55 |
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;
} |
|
|
04.03.2016, 09:00 |
Auf diesen Beitrag antworten » |
progger |
Was hast du denn genau bei der Main da gemacht ? |
04.03.2016, 09:03 |
Auf diesen Beitrag antworten » |
eulerscheZahl |
Ein Team angelegt, es spielen lassen und dann ausgegeben.
Einfach nur um die Funktionalität zu testen. |
04.03.2016, 09:37 |
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
|
04.03.2016, 09:43 |
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 << |
04.03.2016, 10:00 |
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? |
04.03.2016, 10:12 |
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_ */ |
|
|
04.03.2016, 10:30 |
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 ? |
04.03.2016, 10:34 |
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"); |
|
|
04.03.2016, 10:48 |
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
|
04.03.2016, 10:52 |
Auf diesen Beitrag antworten » |
eulerscheZahl |
Da fehlt halt noch die Ausgabe (und deren Formatierung). Ansonsten sehe ich kein Problem.
|
04.03.2016, 10:59 |
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;
};
|
|
|
04.03.2016, 11:08 |
Auf diesen Beitrag antworten » |
eulerscheZahl |
oder
code: |
1:
2:
3:
|
cout << bayern;
cout << bvb;
cout << werder; |
|
Das kannst du machen, wie du willst. |
04.03.2016, 11:14 |
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. |
04.03.2016, 11:19 |
Auf diesen Beitrag antworten » |
eulerscheZahl |
DU kannst schreiben , 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. |
04.03.2016, 11:41 |
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
|
04.03.2016, 11:59 |
Auf diesen Beitrag antworten » |
eulerscheZahl |
Das const will er gerade nicht fressen
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. |
04.03.2016, 12:11 |
Auf diesen Beitrag antworten » |
progger |
Kannst du mir erklären was diese Zeile genau macht ?
return this->getTotalPoints() > rop.getTotalPoints(); |
04.03.2016, 12:14 |
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. |
04.03.2016, 12:20 |
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
Greife ich auf die Tordifferenz so zu ?
this pfeil addResult() > rop.addResult(); |
04.03.2016, 13:15 |
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. |
04.03.2016, 14:24 |
Auf diesen Beitrag antworten » |
progger |
this->m_goalsScoredTotal > m_receivedGoalsTotal;
In Ordnung ? |
04.03.2016, 15:12 |
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. |
04.03.2016, 18:37 |
Auf diesen Beitrag antworten » |
progger |
Das ist sau kompliziert für mich .
Soll ich eine if Bedingung erstellen ? |
04.03.2016, 18:38 |
Auf diesen Beitrag antworten » |
eulerscheZahl |
Du wirst wohl mehr als eine brauchen. |
05.03.2016, 11:08 |
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? |
05.03.2016, 11:13 |
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. |
05.03.2016, 11:16 |
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;
}
}
|
|
|
05.03.2016, 11:26 |
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 |