Russian Qt Forum

Qt => Общие вопросы => Тема начата: pashazz от Июль 09, 2009, 10:21



Название: QList<MyClass>::indexOf
Отправлено: pashazz от Июль 09, 2009, 10:21
Всем привет.
Есть некий класс
Код
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. Также проверено дебаггером


Название: Re: QList<MyClass>::indexOf
Отправлено: Rcus от Июль 09, 2009, 10:29
Нужно смотреть на реализацию класса, а точнее конструктор копирования и оператор ==


Название: Re: QList<MyClass>::indexOf
Отправлено: ритт от Июль 09, 2009, 10:32
Код:
-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