dziwne rzutowanie

0

Witam :-)

Piszac funkcje porownujaca do qsorta musialem uzyc takiego rzutowania:

int por(const void *f1, const void* f2)
{ 
       return     (*(reinterpret_cast<Tfigura**>(const_cast<void*>(f1))))->wartosc() -                     (*(reinterpret_cast <Tfigura**>(const_cast<void*>(f2))))->wartosc();
}

Bylbym bardzo wdzieczny gdyby ktos wyjasnil mi dlaczego musialem uzyc const_cast. Bez tego program sie nie kompiluje. qsort dostaje do posortowania cos takiego: Tfigura* lista[]...</cpp>

0

Witam :-)

Piszac funkcje porownujaca do qsorta musialem uzyc takiego rzutowania:

int por(const void *f1, const void* f2)
{ 
       return     (*(reinterpret_cast<Tfigura**>(const_cast<void*>(f1))))->wartosc() -                     (*(reinterpret_cast <Tfigura**>(const_cast<void*>(f2))))->wartosc();
}

Bylbym bardzo wdzieczny gdyby ktos wyjasnil mi dlaczego musialem uzyc const_cast. Bez tego program sie nie kompiluje. qsort dostaje do posortowania cos takiego: Tfigura* lista[]...</cpp>

Pewnie dlatego, że w nagłówku funkcji masz parametry typu const

0

wczesniejsza wersja uzywala rzutowania

reinterpret_cast<const Tfigura**>(f1)

i kompilator pisal ze nie moze rzutowac const void* na const Tfigura**...</cpp>

1 użytkowników online, w tym zalogowanych: 0, gości: 1