我使用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()函数中我必须将SDL_Renderer的指针传递给其他SDL函数,所以我必须使用&再次在第二种情况下。
答案 0 :(得分:3)
只要您处理SDL对象,就应该将它们保留为指针,因为当您将它们传递回SDL函数时,您将不得不将它们转换回指针。在大多数情况下,您应该将SDL资源指针视为不透明。
答案 1 :(得分:1)
SDL是一个C库。您建议的两种方式都可以使用,但C代码没有引用,因此每次要将SDL_结构传递给函数时,最终都会使用&
运算符。所以在你的例子中使用指针会更好,但更好的方法是创建一个小的SDL C ++包装器。