2016-10-13 35 views
0

我使用SDL的RenderCopy功能:應用範圍解析操作會導致編譯器嗆

SDL_RenderCopy(Game::mRenderer, Game::mTexture, &mSourceRect, &mDestinationRect); 

最後兩個參數是源和目標矩形將影像複製到從,它期待的指針rects,上面的代碼可以像我們期望的那樣工作,並且它們被重新輸入爲「SDL_Rect Game :: mSourceRect」,就像您期望的成員變量一樣。

我碰到一個問題,每當我嘗試的時候都傳遞給這個函數的範圍解析操作符適用於rects只有這個功能:

SDL_RenderCopy(Game::mRenderer, Game::mTexture, &Game::mSourceRect, &Game::mDestinationRect); 

的錯誤是:

argument of type "SDL_Rect Game::*" is incompatible with parameter of type 
"const SDL_Rect *" SDL2Refresher 

如果你檢查類型& Game :: mSourceRect是,它解析爲完全相同的事情,如果我不使用範圍解析運算符,那麼我的問題是爲什麼地球上會導致代碼不能編譯?

在錯誤列表中,它表​​示「SDL_Rect Game :: *與類型爲」const SDL_Rect *「的參數不兼容(如果有幫助的話)。

我可以不在這兩個參數上使用範圍解析運算符,但我習慣性地使用它,因爲我整天在工作中編寫C#,並且我經常通過它們的命名空間顯式訪問它,所以我很難當我經常這樣做時,不會對範圍進行限定(加上明確地確定這樣的範圍並不是一件壞事,所以我想堅持下去)。

+0

您意外地形成了一個指向成員的指針。 –

+0

遊戲是一個命名空間還是一個類? – immibis

+0

對不起,遊戲是一個類,應該提到這一點。 –

回答

1

你可以檢查&(Game :: mSourceRect)作爲參數嗎?編譯器錯誤看起來像是將類和作用域視爲類型的一部分。也許如果你首先評估類型(括號),然後在括號外應用地址(&)。

+0

修正了它,現在我覺得有點笨,因爲沒有嘗試:P我會在10分鐘內接受這個答案,謝謝! :) –