Я использую функцию RenderCopy SDL:
SDL_RenderCopy(Game::mRenderer, Game::mTexture, &mSourceRect, &mDestinationRect);
Последние два аргумента — это исходный и конечный прямоугольники для копирования изображения, он ожидает указатель на прямоугольники, приведенный выше код работает так, как и следовало ожидать, и они снова набираются как «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::* не совместим с параметром типа "const SDL_Rect *" ", если это вообще помогает.
Я просто не могу использовать оператор разрешения области действия для этих двух аргументов, но обычно я просто использую его, потому что я весь день пишу на C# на работе и постоянно обращаюсь к вещам по их пространству имен, поэтому мне трудно не ограничивать область действия, когда Я делаю это так часто (плюс явное определение чего-то подобного не так уж плохо для начала, поэтому я хотел бы просто придерживаться этого).
new / new[]
повсюду, когда в этом нет необходимости, и целый ряд других вещей, которые, кажется, проникают в код C ++. - person PaulMcKenzie   schedule 13.10.2016