在c ++中传递SDL对象的最佳方法

时间:2013-08-25 13:27:44

标签: c++ pointers reference sdl sdl-2

我使用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函数,所以我必须使用&再次在第二种情况下。

2 个答案:

答案 0 :(得分:3)

只要您处理SDL对象,就应该将它们保留为指针,因为当您将它们传递回SDL函数时,您将不得不将它们转换回指针。在大多数情况下,您应该将SDL资源指针视为不透明。

答案 1 :(得分:1)

SDL是一个C库。您建议的两种方式都可以使用,但C代码没有引用,因此每次要将SDL_结构传递给函数时,最终都会使用&运算符。所以在你的例子中使用指针会更好,但更好的方法是创建一个小的SDL C ++包装器。