Объективное значение C ++ требуется в качестве унарного операнда '&'

0

Я работаю над движком игры, используя SDL2. Мой метод имеет ошибку "lvalue, требуемую как унарный" и "операнд",

// Class Enviroment
@interface Environment : NSObject
{
    SDL_Rect groundPos;
}

// Class Game
@interface Game: NSObject
{
    -(SDL_Surface *) addItem: (const char *) file andRegion: (SDL_Rect *) region
    {
         SDL_Surface * temp;
         SDL_Surface * formatted;
         temp = IMG_Load(file);
         formatted = SDL_ConvertSurface(temp, temp->format, NULL);
         temp = NULL;
         return formatted;
    }

    -(void) loadSurfaces
    {
         SDL_Surface *ground;
         ground = [self addItem: "media/ground.bmp" andRegion: &environment.groundPos];
    }
}

Я кодирую его в объекте-С++ с помощью создателя кодовых блоков в окнах и компилятора gcc

  • 0
    У вас есть полная ошибка, включая номер строки?
  • 0
    Что такое environment.groundPos ? Как это определяется?
Показать ещё 1 комментарий
Теги:
objective-c++

1 ответ

0

не зная environment я не могу ответить... но я предполагаю, что вы, вероятно, могли бы сделать одну из двух разных вещей (в зависимости от того, какой тип на самом деле):

//(POD just passing in a copy of the value by ptr)
SDL_Rect region = environment.groundPos
ground = [self addItem: "media/ground.bmp" andRegion: &region];

//(Environment is a ptr and has a SDL_RECT ptr member)
ground = [self addItem: "media/ground.bmp" andRegion: environment->groundPos];

//(Member is a POD)
ground = [self addItem: "media/ground.bmp" andRegion: &(environment->groundPos)];

//(maybe what you are trying dereference and dot operator, parens to make explicit)

ground = [self addItem: "media/ground.bmp" andRegion: (*environment).groundPos]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню