0

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

4

2 回答 2

3

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

于 2013-08-25T13:35:54.140 回答
1

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

于 2013-08-25T13:35:42.537 回答