[C++] Błąd podczas rzutowania operatorem reinterpret_cast

Witam!

Mam tablicę tab z elementami typu int i na podstawie wyszukiwania w niej największego/najmniejszego elementu odpowiednio funkcjami max_element i min_element , chcę uzyskać ich indeksy.

Takie rozwiązanie działa bez problemu:

max_poz = ( reinterpret_cast<int>(max_element(tab, tab+n)) - reinterpret_cast<int>(tab) ) / sizeof(int);min_poz = ( reinterpret_castint(min_element(tab, tab+n)) - reinterpret_castint(tab) ) / sizeof(int); [/code]

Ale jestem ciekaw dlaczego to już nie:

[code=php]max_poz = ( reinterpret_castint( max_element(tab, tab+n) - tab) ) / sizeof(int);min_poz = ( reinterpret_castint( min_element(tab, tab+n) - tab) ) / sizeof(int); 



Uzyskuję następujący błąd:




[quote]
error: invalid cast from type 'int' to type 'int'
[/quote]




którego nie potrafię zrozumieć. Wiecie może dlaczego tak się dzieje :?:



Pozdrawiam.

Nie potrafię dopatrzeć się sensu rzutowania w tym przypadku. Po prostu odejmij od wyniku działania funkcji wskaźnik na początek tablicy. Nie musisz bawić się w jakiekolwiek rzutowania.

http://pl.wikibooks.org/wiki/C/Wska%C5% … nik.C3.B3w

Muszę wyświetlić te pozycje na ekran.

Ale rzutowanie jest zbędne - język sam wszystko pooblicza jeśli się poprawnie użyje arytmetyki wskaźników, przykład w linku powyżej.

int tb[100];

int *p=&tb[0];

int *k=&tb[10];

int dist=k-p; // dist==10

Faktycznie, zupełnie o tym zapomniałem :razz: Dzięki :slight_smile: