2013-08-25 44 views
0

我下开始一个小游戏++使用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()FUNC我到SDL_Renderer的指针传递到其它SDL的功能也将在后面,所以我会在第二种情况下必须再次使用&。

回答

3

只要你正在处理SDL的对象,你应该让他们为指针,因为你只是将不得不把它们放回指针当你通过他们回到SDL功能。大多数情况下,您应该将指向SDL资源的指针视为不透明。

1

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