2013-07-31 263 views
0

我知道這個長的字符串可以變得更容易閱讀,但我不想這麼做!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 ]; 

嗯,我沒有它就是這樣,我也想嘗試和掌握整個運營商的優先事項..

我試了一下,但我不能讓我t與最後一個[]運算符一起工作。

所以...我得到這個:

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-array 




Uint32 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 ]; 

換句話說,我希望最後的operator [],sdlSurface->pixels[numbers],包括在內。

+0

你去了哪裏:http://en.cppreference.com/w/cpp/language/operator_precedence – Shlublu

回答

3

[]優先級高於*,所以:

*pointer_To_A_Vector_With__Pointers[i]->get_Another_Vector() 

應該是:

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

爲您的變量名稱所暗示的。

+0

我不會認爲'[我] - >'實際上工作! – jrok

+0

@jrok你的意思是它的第一個表達給編譯錯誤? –

+0

不,我的意思是我不知道它是有效的。 – jrok