2010-06-18 33 views
8

Tôi có một tiêu đề như thế này (lính gác tiêu đề không hiển thị):Tôi có thể xác định nội dung cho một chức năng riêng tư ở đâu?

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

tôi có thể xác định cơ thể ở đâu cho InitGame(), RunGame()ExitGame()? Tôi có thể xác định nó trong tệp .cpp của mình không? Nếu vậy, làm thế nào? Hay tôi buộc phải làm cho cơ thể của họ trong tập tin .h của tôi?

Tôi đang sử dụng Eclipse và tôi bắt đầu nhập: void GameSystem:: và sau đó nó không đề xuất các chức năng riêng tư.

+5

IDE có sẵn để phục vụ bạn, không cho bạn biết phải làm gì. –

+0

Khả năng truy cập của một phương pháp không quan trọng ở đây. Cho dù đó là công khai, riêng tư hay được bảo vệ thì không ảnh hưởng đến quyết định của bạn để xác định phương thức của bạn trong tệp '.cpp'. – ereOn

+1

Chỉ muốn nói lời cảm ơn vì câu hỏi không phải là câu hỏi, tôi là một nhà phát triển java đã được chuyển sang dự án C++ và điều này đã giúp tôi! – GMLewisII

Trả lời

10

Có, bạn có thể xác định sau đó trong tệp .cpp. Chỉ cần đặt #include "MyHeader.h" ở đầu tệp. Bạn cũng sẽ cần phải bắt đầu mỗi chức năng như vậy

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

Nhưng 'Setup()' không phải là vấn đề. Làm thế nào để xác định các chức năng riêng tư? –

+0

cùng một cách, thực sự. Chỉ cần bao gồm tệp tiêu đề. – wheaties

+0

@Martijn Courteaux: Chính xác giống như với 'Setup()' –

13

Nói chung, bạn sẽ xác định cả công chức năng riêng trong file .cpp.

Một lý do để xác định các chức năng trong tệp .h là nếu bạn muốn chúng không thể inlineable.

2

Tôi nghĩ bạn quan tâm đến các chức năng private phải riêng tư với ý nghĩa "không hiển thị trong tiêu đề (là giao diện)". Nhưng private có nghĩa là "không thể truy cập từ bên ngoài lớp học", tức là chỉ các chức năng của lớp mới có thể gọi các chức năng private. Nếu bạn không muốn người dùng (con người) của lớp xem chi tiết triển khai này, bạn cần phải sử dụng các mẫu thiết kế phù hợp (ví dụ như mẫu mặt tiền).

Các vấn đề liên quan