C ++ - 需要有关如何正确设计多文件程序的建议

时间:2015-04-29 09:24:10

标签: c++ header-files

好的,基本上我需要使用Allegro 5和C ++创建一个简单的游戏。我想将它拆分为单独的模块,以便更容易管理。我的问题是:管理"移动"的正确方法是什么?不同文件之间?具体来说,我想要一个名为Menu.cpp的文件,它将是主文件,然后根据用户选择的内容,它执行其他文件中指定的操作,如Singleplayer.cpp或Options.cpp(是这甚至是一个好方法?)。我的想法就是这样做:

//Menu.cpp
#include "Singleplayer.h"

int main()
{
int parameter;
if(user_selects_singleplayer) singleplayer(parameter);
return 0;
}


//Singleplayer.cpp
void singleplayer(int parameter)
{
...
handle_singleplayer
...
}

//Singleplayer.h
#ifndef SINGLEPLAYER_H
#define SINGLEPLAYER_H //or maybe #pragma once  ?

void singleplayer(int parameter);

#endif

我想知道它是否是一种正确的方法,如果是这样,我是否应该在Singleplayer.cpp中使用main()函数(以及如何更改文件以使其成为如果我需要在Singleplayer.cpp中包含Singleplayer.h。

在我的例子中,我省略了一些东西,比如包括allegro库,初始化更多变量等,以使一般的想法更清晰。另外我还要注意,我不能使用类和流(我知道它是愚蠢的,但它是一个要求,因为这个项目是编程类的家庭作业)。

编辑:@Leiaz链接的问题是相关的,对它的回答肯定有助于理解标题是如何工作的,但我的问题更多是关于正确的设计方法。无论如何,感谢答案,我一定会读到这个主题。

1 个答案:

答案 0 :(得分:0)

以下是一些适用于大多数情况的规则:

  • 每个cpp文件都有一个包含在cpp

    中的h文件

    main.cpp包括main.hSingleplayer.cpp包括Singleplayer.h

  • 类定义和函数原型都在头文件中,实现在cpp文件中

    h:int add(int x, int y); cpp:int add(int x, int y){ return x+y; }

  • 仅包含头文件,从不包含cpp文件

    避免多个定义问题,因为标题有代码保护(你的定义)而cpp没有

  • 仅包含实际需要的文件以减少编译时间

    不要制作包含每个标题的all.h

  • 如果可能,请在cpp文件中包含h文件。如果需要,只在标题中包含它。

    缩短编译时间并避免循环引用

你应该研究如何正确设计一个c ++项目来理解它背后的原理。

相关问题