簡體   English   中英

在 C++ 中將多個子類包含到文件中的最佳方法是什么?

[英]What is the best way to include multiple subclasses into a file in c++?

我確定有人問過這樣的問題,但我根本找不到它們。 我可能使用了錯誤的詞,如果是這樣,那么正確方向的點會很棒,我將刪除這個問題。

無論如何,我正在制作我的第一個“更大”的項目,現在我有大量文件需要包含到其他文件中才能使項目正常運行。 問題是包含所有這些文件看起來非常混亂,可能會導致不需要的包含/錯誤。 例如我的意思;

假設我在名為 Spell.h 和 Spell.cpp 的文件中有一個名為 Spell 的類,它保存所有法術的一般信息(法力消耗、施法時間等),然后是一堆從 Spell 類繼承的不同特定法術,所有在他們自己的單獨文件中。 我需要將這些法術包含在 Enemy 和 Character 類中,以便它們可以擁有可用法術的列表,但這樣做意味着我需要單獨包含我需要的每個特定法術。 這聽起來既乏味又惡心。

我想知道是否有一種方法可以簡單地調用諸如 '#include "AllSpells.h"' 或 '#include "CharacterSpells.h"' 之類的方法,然后將包含我想要包含的所有文件。

我知道我可以創建一個包含所需特定咒語的空類,然后只包含該類(例如,有一個名為 AllSpells 的類,它 #includes 每個特定咒語),但這聽起來也很糟糕。

這似乎是一件很常見的事情,因此有一個“最佳”或“最佳”方法列表來做這樣的事情是有道理的。 非常感謝這里的任何建議。

我提供以下編碼指南,希望能幫助您決定是否在 .cpp 文件中#include .h 文件。

  1. 我發現開閉原則是最有價值的原則之一。 如果您需要修改現有文件以支持新類型的Spell ,則違反了此原則。

  2. 如果您可以避免使用前向聲明,請使用它。 不要包含 .h 文件。 請參閱何時可以使用前向聲明? 有關該主題的更多信息。

關於

我需要將這些法術包含在EnemyCharacter類中,以便它們可以擁有可用法術的列表,但這樣做意味着我需要單獨包含我需要的每個特定法術。 這聽起來既乏味又惡心。

這並不粗俗,它是必要和適當的。 這可能很乏味,但可以通過重新審視您的代碼並確定您是否可以在不需要顯式引用Spell子類型的情況下解決這個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM