0

SDL の RenderCopy 関数を使用しています。

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

最後の 2 つの引数は、画像をコピーするコピー元とコピー先の四角形です。四角形へのポインタが必要です。上記のコードは期待どおりに機能し、再び "SDL_Rect Game::mSourceRect" として型付けされます。 、メンバー変数に期待されるように。

この関数とこの関数のみに渡されるときに、四角形にスコープ解決演算子を適用しようとすると、常に問題が発生します。

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::* is not compatible with parameter of type "const SDL_Rect *"」と表示されています。

これらの 2 つの引数でスコープ解決演算子を使用することはできませんが、私は仕事で 1 日中 C# を書いており、名前空間によって常に明示的にアクセスしているため、習慣的に使用しています。私はそれを頻繁に行っています(さらに、このようなものを明示的にスコープすることは、そもそも悪いことではないので、そのまま使い続けたいと思います)。

4

1 に答える 1

1

引数として &(Game::mSourceRect) が機能するかどうかを確認できますか? コンパイラ エラーは、クラスとスコープを型の一部として扱っているようです。最初に型を評価する場合は (角かっこで)、角かっこの外側に (&) のアドレスを適用します。

于 2016-10-13T03:29:08.640 に答える