2013-08-25 77 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++包裝器。