2012-11-02 96 views
2

我是C++的新手,並且正在製作一款遊戲來教自己更多。在C++中設置/獲取大量變量的良好習慣

我想聽聽您關於存儲/訪問大量變量的想法。

我到目前爲止所做的努力是試圖將我的「關鍵」變量粘貼到單獨的名稱空間中,以便我可以在整個程序中訪問它們。

這是個好主意嗎?我有強烈的感覺,它可能會回來咬我。

在此先感謝=]

編輯:我在第一年計算的學生,但我有與Java幾年的經驗.. C++是如此的不同=/

+7

大量的變量本身是一個壞主意。你應該將你的相關變量分組到類中。 – john

+2

當我們開始編程並嘗試創建類似遊戲的東西時,我們都跳入其中 - 但從關於如何完成任務的基本教程開始真的是一個好主意。它可以在以後節省頭痛和心痛。特別是如果你想使用C++ ... – Caribou

+0

你可以使小容器或類來存儲統計數據,速度,視覺半徑等。 –

回答

1

組的變量到結構或類。如果你需要在你的課堂外暴露出大量的變量,那麼你必須重新考慮你的設計

1

你組織數據的主要武器是類:類是一個對象,它代表了你的程序的一個元素。你給它命名,給它一些變量和函數,然後在你的程序中創建它的實例。該類負責其所有數據,並可以阻止其他類訪問它。

class foo 
{ 
    public: 
    int iAmAPublicVariable; // <---This variable can be accessed by anyone who has access to an instance of the class 

    private: 
    int iAmAPrivateVariable; // <---- This variable can be accessed only from within the class itself. 
}; 

控制訪問類數據的一個好方法是通過使用Getters和Setters。所以......

class foo 
{ 
    public: 
    int getImportantData(); 
    void setImportantData(int); 

    private: 
    int importantData; 
}; 

int foo::getImportantData() 
{ 
    //here I could put some validation to make sure that it's ok to give out importantData; 
    return importantData; //this will return a copy of importantData, so the original is still safe within the class 
} 

void foo::setImportantData(int newData) 
{ 
    //here I could put some validation to make sure that it's ok to overwrite importantData; 
    importantData = newData; 
} 

有了這個設置是importantData可以訪問的唯一途徑是通過get和set方法,因此類有過發生了什麼給它的最終控制權。

類應該是你的程序的基礎;如果你有大量的變量,那麼看看它們的用途以及使用它們的功能,並嘗試將這個過程分解成離散的功能區域。然後創建代表這些區域的類併爲它們提供它們所需的變量和方法。您的代碼最終應該變得更小,更易於理解,更穩定,更易於調試,更易重用,並且可以更好地表示您嘗試建模的任何內容。

相關問題