2010-06-18 8 views
8

Ich habe einen Header wie dieser (Kopfschutz nicht dargestellt):Wo kann ich den Body für eine private Funktion definieren?

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; 
}; 

Wo kann ich den Körper für InitGame(), RunGame() und ExitGame() definieren? Kann ich es in meiner .cpp Datei definieren? Wenn das so ist, wie? Oder bin ich verpflichtet, ihren Körper in meiner .h Datei zu machen?

Ich benutze Eclipse und ich begann zu tippen: void GameSystem:: und dann schlägt es nicht die privaten Funktionen vor.

+5

Die IDE gibt es, Ihnen zu dienen, nicht zu sagen, was zu tun ist. –

+0

Die Zugänglichkeit einer Methode spielt hier keine Rolle. Ob es öffentlich, privat oder geschützt ist, sollte keinen Einfluss auf Ihre Entscheidung haben, Ihre Methoden in der '.cpp' Datei zu definieren. – ereOn

+1

Ich wollte nur Danke für die Nicht-Frage sagen, ich bin ein Java-Entwickler, der zu einem C++ - Projekt bewegt wurde und das hat mir geholfen! – GMLewisII

Antwort

10

Ja, Sie können dann in einer CPP-Datei definieren. Setzen Sie einfach #include "MyHeader.h" am Anfang der Datei. Sie müssen auch so definieren würde wie jede Funktion starten

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

Aber 'Setup()' ist nicht das Problem. Wie definiere ich die privaten Funktionen? –

+0

auf die gleiche Weise, wirklich. Fügen Sie einfach die Header-Datei ein. – wheaties

+0

@Martijn Courteaux: Genau wie bei 'Setup()' –

13

Allgemeinen Sie sowohl öffentliche und privaten Funktionen in der .cpp Datei.

Ein Grund für die Definition von Funktionen in der Datei .h ist, dass sie inline-fähig sein sollen.

2

Ich denke, Sie sind besorgt über private Funktionen sollten privat mit der Bedeutung "nicht sichtbar in der Kopfzeile (das ist die Schnittstelle)". Aber private bedeutet "nicht von außerhalb der Klasse zugänglich", d.h. nur Funktionen der Klasse können private Funktionen aufrufen. Wenn Sie nicht möchten, dass (menschliche) Benutzer Ihrer Klasse diese Implementierungsdetails sehen, müssen Sie ein geeignetes Entwurfsmuster (z. B. Fassadenmuster) verwenden.

Verwandte Themen