2014-07-11 199 views
1

我有我希望可以訪問我的所有應用程序的變量。這是不好的做法嗎?如果是這樣,爲什麼?全局變量的名稱空間

namespace Global 
{ 
    SDL_Window* window; 
    SDL_Renderer* renderer; 
    UI* new_view; 
} 

另一個建議:

如何在構造函數指針傳遞到全局變量的類並保持它作爲一個局部變量?

class A 
{ 
    SDL_Renderer* m_renderer; 

    A(SDL_Renderer* renderer); 
} 

A::A(SDL_Renderer* renderer) 
{ 
    m_renderer = renderer; 
} 
+1

你爲什麼不通過變量_explicitly_到功能或無論使用這些變量的類是什麼? –

+0

這就是我迄今爲止所做的,但它導致了9個以上參數的函數。我在我的問題中增加了另一個建議。 – user3720733

+0

如果你總是通過所有三個,那麼你可以定義一個'struct',其中包含三個作爲memebers,並通過一個結構 –

回答

2

這是不好的做法嗎?

是的,使用全局變量是不好的做法,不管這些變量是否放置在單獨的命名空間中。

如果是這樣,爲什麼?

它引入了系統模塊之間的不必要的依賴關係。保持數據和行爲本地化到類,這是負責做特定的事情。
有很少的情況下,單身人士是有道理的,但這些不應該是簡單的全局變量,但有一個靜態成員(或免費)功能來訪問它們。

0

是的,這很糟糕。
好的部分:你已經解決了第一個不好的原因(混淆了全局命名空間),
但是不要命名你自己的命名空間「Global」。選擇更獨特的東西。
壞的部分:有更多的東西,如創建不需要依賴
(如計劃A部分不需額外的工作,如果B部分doesn't修改值)

相關問題