Wpis z mikrobloga

@erajwa: no tak, zwykła klasa, ma mieć swoje funkcje i zmienne... czym innym miałaby być? To normalnie duże klasy, mają inne funkcje w środku, dużo się dzieje... to jest tylko wycięty minimalny szkielet programu pozwalający na odtworzenie błędu.
  • Odpowiedz
@DK13: że cast? No wiem, że jest ale bez niego też nie działa, to już był paniczny ruch bo QList::indexOf(this) daje ten sam błąd.
  • Odpowiedz
a jak dasz const_cast(this) ?


@DK13: wiesz, skoro i tak zapisuję do InnerClass const*const ptr więc to tak naprawdę bez różnicy co tam wcześniej robiłem, kompilator nie powinien marudzić na tak późnym etapie jakim jest indexOf, a właśnie wcześniej. Ale przetestowałem, efekt ten sam i masz rację, ten cast jest zupełnie niepotrzebny.

metoda index() jest
  • Odpowiedz
@inplaz: aha... no to zrobiłem tak:
for (int i = 0; parent->list().length(); ++i) {
if (parent->list().at(i) == this) {
return i;
}
}
return -1;
i działa. :P Dzięki.
  • Odpowiedz
@Dijuna: masz powiedziane wprost skąd jest ten błąd.
funkcja indexOf przyjmuje argument typu const &T gdzie T = InnerClass* czyli stałą referencję na wskaźnik.
A ty próbujesz tam przekazać wskaźnik do stałego elementu (bo funkcja index() jest typu const).
Zmiana zmiennej list na QList list; oraz odpowiednia modyfikacaj sygnatury funkcji list() powinna załatwić sprawę (być może to drugie wystarczy).

Niestety nie mam zestawionego środowiska do Qt więc nie mogłem przetestować,
  • Odpowiedz
@Massad: QList generuje ten sam błąd, QList byłoby bez sensu, a zresztą się chyba nawet nie da. indexOf() nie powinien potrzebować zmiennego elementu bo po co mu on? Ta funkcja tylko porównuje adresy pointerów w tym wypadku, nic więcej nie robi - i ja jej przekazuję stałą referencję do stałego elementu który jest wskaźnikiem i wskazuje na stały element (a przynajmniej chcę tak zrobić)... dlatego stały element nie powinien jej
  • Odpowiedz