Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] error: passing `const RObiekt' as `this' argument of `void RObiekt::aktualizujPolozenie()' discards qualifiers|

Ostatnio zmodyfikowano 2012-09-28 21:45
Autor Wiadomość
ridic14
Temat założony przez niniejszego użytkownika
[C++] error: passing `const RObiekt' as `this' argument of `void RObiekt::aktualizujPolozenie()' discards qualifiers|
» 2012-09-28 16:11:44
Mam pewien problem którego nie znam rozwiązania(Korzystam z SFML 2.0):
Kod oczywiście żywcem ściągnięty z kursu...
do tego:
i->aktualizujPolozenie();
przyczepia się to:
error: passing `const RObiekt' as `this' argument of `void RObiekt::aktualizujPolozenie()' discards qualifiers|
i napomina o(void RObiekt::aktualizujPolozenie()) :
C/C++
void RObiekt::aktualizujPolozenie()
{
    //Ograniczamy prędkość przemieszczania obiektu w osi X i Y do właściwej wartości:
    if( ruchX > fPredkosc )
         ruchX = fPredkosc;
   
    if( ruchX <- fPredkosc )
         ruchX = - fPredkosc;
   
    if( ruchY > fPredkosc )
         ruchY = fPredkosc;
   
    if( ruchY <- fPredkosc )
         ruchY = - fPredkosc;
   
   
    x += ruchX;
    y += ruchY;
   
   
    ruchX = 0;
    ruchY = 0;
}

I chciałbym się dowiedzieć czego wymaga ode mnie ten błąd:
error: passing `const RObiekt' as `this' argument of `void RObiekt::aktualizujPolozenie()' discards qualifiers|
P-65662
DejaVu
» 2012-09-28 18:44:20
Podaj deklarację funkcji/metody z której to wywołujesz oraz typ zmiennej 'i'. Generalnie brzmi to jakby 'i' było const_iteratorem.
P-65664
ridic14
Temat założony przez niniejszego użytkownika
» 2012-09-28 21:17:56
To chyba to: Wygląda na to że to jest const iterator


C/C++
for( VObiektyT::const_iterator i = vObiekty.begin(); i != vObiekty.end(); ++i )
     i->aktualizujPolozenie();

ale co dalej
P-65688
DejaVu
» 2012-09-28 21:35:52
Zamień const_iterator na iterator i będzie działało. const_iterator mówi, że obiekt będzie używany tylko do odczytu, a zatem wywoływanie metod, które nie mają na końcu 'const' nie jest możliwe oraz ewentualna próba zakończy się błędem kompilacji.
P-65697
ridic14
Temat założony przez niniejszego użytkownika
» 2012-09-28 21:45:52
tak teraz działa dzięki za pomoc
P-65701
« 1 »
  Strona 1 z 1