2010-06-18 19 views
8

Böyle bir başlık (başlık korumaları gösterilmemiştir) sahiptir:Vücudu özel bir işlev için nerede tanımlayabilirim?

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; 
}; 
I InitGame(), RunGame() ve ExitGame() için vücut tanımlayabilir

? .cpp dosyamda tanımlayabilir miyim? Öyleyse nasıl? Yoksa vücudumu .h dosyamda yapmak zorunda mıyım?

Eclipse kullanıyorum ve yazmaya başladım: void GameSystem:: ve daha sonra özel işlevler önermiyor.

+5

IDE ne yapacağını söylemek değil, size hizmet etmek için vardır. –

+0

Bir yöntemin erişilebilirliği burada önemli değil. İster kamusal ister özel olsun, korunsun, yöntemlerinizi ".cpp" dosyasında tanımlama kararınızı etkilememelidir. – ereOn

+1

Sadece soru için teşekkür etmek istedim, ben bir C++ projesine taşınmış bir java geliştiricisiyim ve bu bana yardımcı oldu! – GMLewisII

cevap

10

Evet, bir .cpp dosyasında tanımlayabilirsiniz. Dosyanın başına sadece #include "MyHeader.h" koyun. Ayrıca Genellikle .cpp dosyada hem kamu ve özel işlevler tanımlamak diye

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

Ancak 'Kur()' sorun değil. Özel işlevler nasıl tanımlanır? –

+0

aynı şekilde, gerçekten. Sadece başlık dosyasını ekleyin. – wheaties

+0

@Martijn Courteaux: 'Kur() ' –

13

gibi her fonksiyonu başlatmak gerekir.

.h dosyasındaki işlevleri tanımlamanın bir nedeni, bunların çizgilendirilmesini istemektir.

2

private işlevleriyle ilgili endişeleriniz "başlıkta görünmüyor" anlamında gizli kalmalıdır. Ancak private "sınıf dışından erişilebilir değil" anlamına gelir, yani yalnızca sınıfın işlevleri private işlevlerini çağırabilir. Sınıfınızın kullanıcılarının (insan) istemediklerini görmek istiyorsanız, bu uygulama ayrıntılarını görünüz, uygun bir tasarım desenleri (örn. Cephe deseni) kullanmanız gerekir.

İlgili konular