작은 문제가 있습니다. 저는 현재 토너먼트 처리를위한 코드를 작성 중입니다. 팀원들을 메모리에 순서대로 유지하는 가장 좋은 방법은 목록이 될 것이라는 생각으로 나왔습니다. 이제 포인트 레코드 인 팀 클래스를 정렬하는 목록을 정렬하려고합니다. 다음은 클래스 선언의 :C++ 클래스를 포함하는 정렬 목록
#include "player.h"
#include <string>
class Team {
Player** Gracz;
std::string Name;
int TP, STP;
int Total;
public:
Team();
Team(Player* gracz1, Player* gracz2, Player* gracz3, Player* gracz4, Player* gracz5, Player* gracz6, std::string name);
~Team();
void SetTeam();
void SetTeam(Player gracz1, Player gracz2, Player gracz3, Player gracz4, Player gracz5, Player gracz6, std::string name);
void SetTP(int tp);
void SetSTP(int stp);
std::string GetTeam();
int GetTotal();
int GetTP();
int GetSTP();
bool operator<(Team& team);
bool operator>(Team& team);
void PrintTeam();
};
그리고 여기에 프로그램 코드입니다 :
#include <iostream>
#include "player.h"
#include "team.h"
#include <list>
#include <string>
using namespace std;
int main(int argc, char *argv[]) {
Player *p;
Team *t1, *t2, *t3, *t4;
list<Team> x;
list<Team>::iterator it;
p=new Player("a","a","a");
t1=new Team(p,p,p,p,p,p,"A");
t2=new Team(p,p,p,p,p,p,"B");
t3=new Team(p,p,p,p,p,p,"C");
t4=new Team(p,p,p,p,p,p,"D");
x.push_back(*t1);
x.push_back(*t2);
x.push_back(*t3);
x.push_back(*t4);
cout<<"Turniej: "<<endl;
for(it=x.begin();it!=x.end();++it)
cout<<" "<<(*it).GetTeam();
cout<<endl;
t1->SetTP(15);
t2->SetTP(4);
t3->SetTP(8);
t4->SetTP(8);
t3->SetSTP(15);
t4->SetSTP(65);
x.sort();
cout<<"Turniej: "<<endl;
for(it=x.begin();it!=x.end();++it)
cout<<" "<<(*it).GetTeam();
cout<<endl;
return 0;
}
그래서 내가 먼저 TP에 의해 다음 STP들에 의해 목록을 정렬하고 싶습니다과 과부하 운영자 <의 선언에 포함 . 제가 목록을 인쇄 할 때, 저는 A, B, C, D를 정렬 전에 그리고 정렬 후에는 A, D, C, B 대신에 얻습니다. 내 실수는 어디 갔어?
도움 주셔서 감사합니다. 여기
'operator <'함수는 어떻게 생겼는가? –