2010-06-18 51 views
8

我有這樣一個標題(頭衛士未顯示):我可以在哪裏定義專用功能的主體?

class GameSystem 
{ 
public: 
    GameSystem(Game *pcGame); 
    virtual ~GameSystem(); 
    void Setup(); 
private: 
    void InitGame(); 
    void RunGame(); 
    void ExitGame(); 
    Game *m_pcGame; 

    /* Properties */ 
    int m_nWidth; 
    int m_nHeight; 
    int m_nFps; 
    bool m_bFullscreen; 
}; 

我在哪裏可以定義身體InitGame()RunGame()ExitGame()?我可以在我的.cpp文件中定義它嗎?如果是這樣,怎麼樣?或者我不得不在我的.h文件中創建自己的身體?

我使用Eclipse,我開始輸入:void GameSystem::,然後它不提示私人功能。

+5

IDE是在那裏爲你服務,而不是告訴你該怎麼做。 – 2010-06-18 13:15:55

+0

方法的可訪問性在這裏並不重要。無論是公共的,私人的還是受保護的,都不應該影響你決定在'.cpp'文件中定義你的方法。 – ereOn 2010-06-18 13:17:43

+1

只是想對這個非問題表示感謝,我是一個已經轉移到C++項目的java開發人員,這幫了我很大的忙! – GMLewisII 2015-10-09 13:57:46

回答

10

是的,你可以在.cpp文件中定義。只需在文件的開頭放置#include "MyHeader.h"即可。您還需要啓動的每個功能,像這樣

void GameSystem::Init(){ 
    //stuff 
} 
+0

但是'Setup()'不是問題。如何定義私有函數? – 2010-06-18 13:08:49

+0

同樣的方式,真的。只需包含頭文件。 – wheaties 2010-06-18 13:09:48

+0

@Martijn Courteaux:與'Setup()'完全相同的方式 – 2010-06-18 13:10:11

13

通常你會在.cpp文件中定義公共私人聚會。

.h文件中定義函數的一個原因是您希望它們是可內聯的。

2

我認爲你關心的是private函數應該是私有的,其含義是「在標題(它是接口)中不可見」。 但private表示「不能從課堂以外訪問」,即只有該課程的功能可以調用private函數。 如果您不希望班級的(人)用戶看到這些實現細節,則需要使用合適的設計模式(例如,門面模式)。

相關問題