Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
--- Implementierungsproblem (http://www.informatikerboard.de/board/thread.php?threadid=3737)


Geschrieben von Kevin33 am 24.10.2017 um 21:23:

 

Über meine Dummheit können wir uns ja später streiten großes Grinsen

Etwas besser ?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
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;
	}






Geschrieben von Kevin33 am 25.10.2017 um 05:56:

 

Habe es hinbekommen.

Hier nochmal für die Nachwelt ,falls jemand sich irgendwann mal mit der Aufgabe beschäftigt.
Muss sich dann nicht dumm und dämlich fragen großes Grinsen

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
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;
	}



Habe getestet,die Ausgabe kommt richtig aus.



Geschrieben von as_string am 25.10.2017 um 14:24:

 

Für die Nachwelt noch ein paar Anmerkungen:

Mehr hab ich mir nicht angeschaut. Aber das sollte man schon beachten.

Gruß
Marco



Geschrieben von Kevin33 am 25.10.2017 um 15:34:

 

Aber mir wurde das von jemanden erklärt das man keine Funktionen beim operator aufrufen kann.

Es wurden ja auch fehler in meinem Ansatz angezeigt .

Aber du meintest ja gleich : Ich will euch verarschen großes Grinsen



Geschrieben von Kevin33 am 25.10.2017 um 15:37:

 

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: &#61623; Es wird true zurückgegeben, wenn der linke Operand mehr Punkte hat als der rechte Operand. &#61623; 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. &#61623; In allen anderen Fällen wird false zurückgegeben

Ich bekomme hier die Fehlermeldungen net weg string:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
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



Geschrieben von as_string am 25.10.2017 um 22:08:

 

Zitat:
Original von Kevin33
Aber mir wurde das von jemanden erklärt das man keine Funktionen beim operator aufrufen kann.

Das ist auch wieder Blödsinn. Da hast Du sicher wieder etwas falsch verstanden.
code:
1:
2:
3:
4:
5:
ostream& operator<<(ostream& out, const CTeam& rop) {
	out << rop.getName() << " : " << rop.m_winsTotal << " " << rop.m_equalTotal << " " << rop.m_lostTotal
	    << " ( " << rop.getTotalPoints() << " Punkte ) Tore " << rop.m_goalsScoredTotal << ":" << rop.m_goalsReceivedTotal;
	return out;
}


Gruß
Marco



Geschrieben von Kevin33 am 25.10.2017 um 22:22:

 

Aha ok . Dann rufe ich das nächste mal die Funktion auf ,hatte ich übrigens in meinen ersten Ansätzen auch.
Wie sieht es genau mit der anderen Methode aus?
Bekomme die Compiler Fehler net weg



Geschrieben von as_string am 25.10.2017 um 22:31:

 

Lass das "this->" einfach komplett weg. Richtig wäre sonst auch "this.", aber das ist unnötig.
Auch "rop->" ist falsch, da dann "rop.", was man allerdings nicht weg lassen kann.

Aber: Du kopierst das doch alles irgendwo her. Da kommt doch nichts von Dir selber. Erklär doch mal in eigenen Worten, was da überhaupt passieren soll. Außerdem hast Du bei uns ja die Aufgabe auch noch nicht gepostet, so weit ich das sehen kann zumindest.



Geschrieben von Kevn33 am 25.10.2017 um 22:42:

 

Das ist eigentlich von mir. Mit this greift man auf das aktuelle Objekt und mit rop. auf das andere .

Soll ich top und this komplett weglassen oder wie?



Geschrieben von as_string am 25.10.2017 um 23:27:

 

Solche Dinge stehen in genug Büchern oder auch im Netz. Lies doch einfach mal irgendwo, wie man einen Vergleichsoperator für eine C++ Klasse überlädt, was es überhaupt soll und wie man was macht. Das macht doch echt überhaupt keinen Sinn, wenn ich denselben Kram hier gerade nochmal erkläre!


Forensoftware: Burning Board, entwickelt von WoltLab GmbH