Всем привет.
Есть некий класс
C++ (Qt)
class Club: public QObject {
public:
Club();
Club (const Club&);
Club& operator=(const Club&);
bool operator==(Club);
QString name;
QString displayName;
QList <Player> players;
QList <Match> matches;
QPair <int, int> goals;
Player getPlayer(int number);
Player getPlayer(QString name);
};
typedef QPair<Player, Player> Change;
struct MatchStatistics {
Club club;
int goals;
QList <Player> golaedors;
QList <Player> start;
QList <Player> traumas;
QList <Change> changes;
QList <Player> yellowCards;
QList <Player> redCards;
};
struct Match {
MatchStatistics home;
MatchStatistics away;
QString matchfile;
};
//И есть QList
QList<Club> clubs = trn->getClubs();
QStringList gamers = trn->getGamers();
m_ui->lblHome->setText(gamers.at(clubs.indexOf(m.home.club)) + "\n(" + m.home.club.name + ")");
m_ui->lblAway->setText(gamers.at(clubs.indexOf(m.away.club)) + "\n(" +m.away.club.name + ")");
проверял много раз debigging helper`ом - в gamers и clubs одинаковое кол-во элементов.
Но почему-то при вызове indexOf происходит out of range. Я так понимаю потому, что возвращается -1
Но m.away.club и m.home.club точно содержатся в clubs. Также проверено дебаггером
Нужно смотреть на реализацию класса, а точнее конструктор копирования и оператор ==
-class Club: public QObject {
+class Club {
public:
Club();
Club (const Club&);
Club& operator=(const Club&);
- bool operator==(Club);
+ bool operator==(const Club&) const;
а ещё лучше
-class Club: public QObject {
+struct Club {
- public:
и похерить ненужные методы (POD)
а совсем хорошо будет, если откроешь для себя implicit sharing