在c ++中将多个子类包含到文件中的最佳方法是什么?

时间:2019-02-15 06:30:29

标签: c++ c++11 include

我肯定有这样的问题,但是我根本找不到它们。我可能使用了错误的单词,如果这样的话,朝正确方向的一个点将非常棒,我将删除这个问题。

无论如何,我正在做我的第一个“大”项目,现在我有很多文件需要包含在其他文件中才能使项目正常运行。问题在于,包括所有这些文件看起来非常混乱,并可能导致不必要的包含/错误。例如我的意思;

说我在名为Spell.h&Spell.cpp的文件中有一个名为Spell的类,该文件包含所有法术的常规信息(法力消耗,施法时间等),然后是从该Spell继承的一堆不同的特定法术类,都放在各自独立的文件中。我需要在“敌人和角色”类中包括这些咒语,以便它们可以列出可用的咒语,但是这样做意味着我需要单独包括我需要的每个特定咒语。听起来很乏味和累赘。

我想知道是否有一种方法可以简单地调用诸如“ #include“ AllSpells.h””或“ #include“ CharacterSpells.h””之类的东西,这些东西随后将包含我想要包含的所有文件。

我知道我可以创建一个空类,其中包含所需的特定咒语,而只包含该类(例如,有一个名为AllSpells的类,其中包含所有特定的咒语),但听起来也很糟糕。

这似乎是一件很普通的事情,因此,有一种“最好的”或“最好的”方法清单可以做到这一点。非常感谢您的任何建议。

1 个答案:

答案 0 :(得分:1)

我提供了以下编码准则,希望可以帮助您决定是否在{.1} .cpp文件中{.1}。

  1. 我发现Open-Closed Principle是最有价值的原则之一。 如果需要修改现有文件以支持新型#include,则违反了该原则。

  2. 如果可以使用前向声明,请使用它。不要包含.h文件。有关该主题的更多信息,请参见When can I use a forward declaration?

关于

  

我需要在SpellEnemy类中包括这些咒语,以便它们可以列出可用的咒语,但是这样做意味着我需要分别包括我需要的每个特定咒语。听起来很乏味和累赘。

那不是毛病,这是必要和适当的。这可能很乏味,但是可以通过重新审视代码并弄清楚是否可以通过而无需显式引用Character的子类型来解决。

相关问题