2016-10-13 10 views
0

Я использую функцию 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# весь день на работе, и я постоянно обращаюсь к вещам по их пространству имен, и поэтому мне трудно не занимайтесь вещами, когда я делаю это так часто (плюс явное определение чего-то вроде этого не так уж и плохо, поэтому я хотел бы просто придерживаться его).

+0

Вы случайно формируете указатель на элемент. –

+0

Является ли игра пространством имен или классом? – immibis

+0

К сожалению, игра - это класс, должен был упомянуть об этом. –

ответ

1

Не могли бы вы проверить, работает ли & (Game :: mSourceRect) в качестве аргумента? Ошибка компилятора выглядит так, что обрабатывает класс и область действия как часть этого типа. Может быть, если вы сначала оцените тип (с помощью скобок), тогда примените адрес (&) за пределами скобок.

+0

Это исправлено, теперь я чувствую себя немного глупым, потому что не пытаюсь: P Я буду принимать этот ответ через 10 минут, когда смогу, спасибо! :) –