在哪里可以定义私有函数的主体?

18

我有一个头文件,如下所示(未显示头文件保护):

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的作用是为你服务,而不是告诉你该做什么。 - anon
1
只是想说谢谢你的非问题,我是一名Java开发人员,现在转到了C++项目,这对我很有帮助! - GMLewisII
你本可以试一下,而不是在自动完成失败时就放弃了!现在的人们过于依赖他们的IDE了 #smh - Lightness Races in Orbit
3
当然可以,但是这个问题是4.5年前提出的。当时我只有15岁,完全不懂C++。请问您需要怎么翻译呢? - Martijn Courteaux
@LightnessRacesinOrbit:当然没问题 :) 如果是今天的话,我也会考虑给自己的回答点个踩,因为“表现出的努力不够”之类的原因。 - Martijn Courteaux
显示剩余2条评论
4个回答

19

是的,您可以在 .cpp 文件中定义它们。只需在文件开头放置 #include "MyHeader.h" 即可。您还需要像这样开始每个函数

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

但是 Setup() 不是问题所在。如何定义私有函数? - Martijn Courteaux
同样的方式,只需包含头文件即可。 - wheaties
@Martijn Courteaux: 和 Setup() 一样的方式。 - John Dibling
1
好的,谢谢。我被Eclipse的建议搞糊涂了。它完美地工作了。我曾经想过:“Eclipse没有建议这样做,所以这一定是错的。” - Martijn Courteaux

14

通常您会在 .cpp 文件中定义公共和私有函数。

将函数定义在 .h 文件中的一个原因是如果您希望它们可以进行内联处理。


2
我认为您关心的是“private”函数应该具有“不在头文件(即接口)中可见”的私有含义。 但是,“private”表示“不能从类外部访问”,即只有类的函数可以调用“private”函数。 如果您不希望类的(人类)用户看到这些实现细节,您需要使用适当的设计模式(例如Facade模式)。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接