2013-08-25 3 views
0

Я начал небольшую игру на C++, используя SDL. Я искал указатели и ссылки, и я понимаю различия.Лучший способ передать объекты SDL в C++

int main(int argc, char* argv[]) 
{ 
    SDL_Renderer* renderer = NULL; 
    TTF_Font* font = NULL; 

    renderer = SDL_CreateRenderer(window, -1, 0); 
    if(renderer == NULL) 
    { 
     return 1; 
    } 

    font = TTF_OpenFont("OpenSans.ttf", 12); 
    if(font == NULL) 
    { 
     return 1; 
    } 

    texture = renderText(...) 

    return 0; 
} 

SDL_Texture* renderText(...) 
{ 
} 

Это часть моей программы, теперь мне нужно передать объекты рендеринга и шрифта в функцию renderText(). Мой вопрос в том, должен ли я передавать их в качестве указателей (которые они уже есть) или в качестве ссылки?

Это, как я думаю, что это будет выглядеть:

SDL_Texture* renderText(SDL_Renderer* renderer,...) 
{ 
} 

renderText(renderer,...) 

или

SDL_Texture* renderText(SDL_Renderer &renderer,...) 
{ 
} 

renderText(*renderer,...) 

Также позже в renderText() FUNC я должен передать указатель на SDL_Renderer в другие SDL функции, так что я бы придется использовать & снова во втором случае.

ответ

3

До тех пор, пока вы имеете дело с объектами SDL, вы должны держать их в качестве указателей, потому что вам просто нужно вернуть их обратно в указатели, когда вы передадите их обратно в функции SDL. Вы должны, по большей части, думать о указателях на ресурсы SDL как непрозрачные.

1

SDL - это библиотека C. Оба способа, которые вы предложили, будут работать, но код C не имеет ссылок, поэтому вы будете использовать оператор & каждый раз, когда хотите передать структуру SDL_ функции. Поэтому лучше использовать указатели в вашем примере, но даже лучший способ - создать небольшую оболочку SDL C++.

Смежные вопросы