указатели — лучший способ передать объекты SDL в переполнение стека

Я начал маленькую игру на C ++, используя SDL. Я искал указатели и ссылки, и я понимаю различия.

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 () я должен передать указатель SDL_Renderer в другие функции SDL, чтобы мне пришлось использовать & снова во втором случае.

0

Решение

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

3

Другие решения

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

1

По вопросам рекламы [email protected]