Combination.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #ifndef __COMBINATION_H__
  2. #define __COMBINATION_H__
  3. #include "spdlog/spdlog.h"
  4. #include <string>
  5. /* 抽象团队类 */
  6. class AbstractTeam
  7. {
  8. public:
  9. AbstractTeam(std::string name) : m_name(name) {};
  10. virtual ~AbstractTeam() {}
  11. /* 设置父节点 */
  12. void setParent(AbstractTeam* parent) { m_parent = parent; }
  13. AbstractTeam* getParent() { return m_parent; }
  14. /* 获取名称 */
  15. std::string getName() { return m_name; }
  16. /* 判断是否有子节点 */
  17. virtual bool hasChildren() { return false;}
  18. /* 添加子节点 */
  19. virtual void add(AbstractTeam* team) {}
  20. /* 移除子节点 */
  21. virtual void remove(AbstractTeam* team) {}
  22. /* 战斗和现实团队信息 */
  23. virtual void fight() = 0;
  24. virtual void display() = 0;
  25. private:
  26. std::string m_name;
  27. AbstractTeam* m_parent = nullptr;
  28. };
  29. /* 叶子节点 */
  30. class LeafTeam : public AbstractTeam
  31. {
  32. public:
  33. using AbstractTeam::AbstractTeam;
  34. ~LeafTeam() override {}
  35. void fight() override
  36. {
  37. SPDLOG_INFO("{} + {} 与黑胡子的船员进行近距离肉搏战...");
  38. }
  39. void display() override
  40. {
  41. spdlog::info("Leaf Team: [{}]", getName());
  42. }
  43. };
  44. #endif /* __COMBINATION_H__ */