указатели — c ++ и операторные приоритеты

Я знаю, что эту длинную строку легче читать, но я этого не хочу!

Я хочу получить цвет пикселя, и я использую SDL. Хотя это не очень актуально для вопроса …

http://www.gamedev.net/topic/502040-sdl-get-pixel-color/

http://www.libsdl.org/docs/html/sdlsurface.html

Показывает, что для получения этого значения цвета, вы делаете:

 Uint32 *pixels = (Uint32 *)surface->pixels;
return pixels[ number ];

Ну, у меня нет этого просто так, и я также хотел попытаться понять весь приоритет операторов ..

Я немного попробовал, но не могу заставить его работать с последним оператором [].

Итак … я получил это:

vector<Class*>* pointer_To_A_Vector_With_Pointers;

Class.h:
vector<Class2*>* get_Another_Vector();

Class2.h
SDL_Surface* sdlSurface;

SDL_Surface.h
has the pixels-arrayUint32 value =  *(Uint32*) (* pointer_To_A_Vector_With__Pointers[i]->get_Another_Vector()  )[i2]->sdlSurface->pixels;

и это должно быть эквивалентно тому, чтобы сказать это:

   Uint32 *pixels = (Uint32 *)surface->pixels;

Это работает, но только получает самый первый цвет массива пикселей. Но я хочу добиться этого ([число] в самом конце строки):

Uint32 value =  *(Uint32*) (* pointer_To_A_Vector_With__Pointers[i]->get_Another_Vector()  )[i2]->sdlSurface->pixels[ number ];

Другими словами, я хочу самый последний оператор [], sdlSurface->pixels[numbers] включены.

0

Решение

приоритет [] выше, чем *, так:

 *pointer_To_A_Vector_With__Pointers[i]->get_Another_Vector()

должно быть:

 (*pointer_To_A_Vector_With__Pointers)[i]->get_Another_Vector()

как подсказывает название вашей переменной

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]