2010-06-18 12 views
8

que tienen una cabecera como esta (guardias de cabecera no se muestran):¿Dónde puedo definir el cuerpo para una función privada?

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

Dónde puedo definir el cuerpo de InitGame(), RunGame() y ExitGame()? ¿Puedo definirlo en mi archivo .cpp? ¿Si es así, cómo? ¿O estoy obligado a hacer su cuerpo en mi archivo .h?

Estoy usando Eclipse y comencé a escribir: void GameSystem:: y luego no sugiere las funciones privadas.

+5

El IDE está ahí para servirle, no le diga qué hacer. –

+0

La accesibilidad de un método no importa aquí. Si es público, privado o protegido no debe influir en su decisión de definir sus métodos en el archivo '.cpp'. – ereOn

+1

Solo quería decir gracias por la no-pregunta, soy un desarrollador de Java que ha sido transferido a un proyecto de C++ y esto me ayudó. – GMLewisII

Respuesta

10

Sí, puede definirlo en un archivo .cpp. Simplemente ponga #include "MyHeader.h" al comienzo del archivo. También tendrá que empezar cada función como tal

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

Pero 'Setup()' no es el problema. ¿Cómo definir las funciones privadas? –

+0

de la misma manera, de verdad. Solo incluye el archivo de encabezado. – wheaties

+0

@Martijn Courteaux: Exactamente del mismo modo que con 'Setup()' –

13

general debe definir ambas y funciones privadas públicas en el archivo .cpp.

Una razón para definir funciones en el archivo .h es si desea que queden alineadas.

2

Creo que le preocupan las funciones private que deben ser privadas con el significado de "no visible en el encabezado (que es la interfaz)". Pero private significa "no accesible desde fuera de la clase", es decir, solo las funciones de la clase pueden llamar a las funciones private. Si no desea que los usuarios (humanos) de su clase vean estos detalles de implementación, debe usar patrones de diseño adecuados (por ejemplo, patrón de fachada).

Cuestiones relacionadas