C++ 在两个头文件中包含一个 class

C++ include a class in two header files

我必须完成一个大学项目,但我不知道如何完成。

问题是我想在 GameHandler Class 中分配一个 Condition 对象(不是指针),如下例所示,但我不能这样做,因为我想到了包含的 Condition.h 在引擎中 Class。所以我无法包含条件 class 两次。我说得对吗?

我怎样做才能得到与我的错误示​​例类似的解决方案?

非常感谢!!!

Condition.h:

#ifndef CONDITION_h
#define CONDITION_h

class Condition
{
  enum Rank {FIRST, SECOND, THIRD};
  void doSomething();
};

#endif

Engine.h

#ifndef ENGINE_h
#define ENGINE_h

#include "Condition.h"

class Engine
{
  Condition::Rank getter();
};

#endif

但现在我有了第三个 Class,它看起来应该像这样,我想在其中创建条件对象(而不是指针)。如何做到这一点?

GameHandler.h

#ifndef GAMEHANDLER_h
#define GAMEHANDLER_h

#include "Condition.h"

class GameHandler
{
  Condition condition_;
  condition_.doSomething();
}

#endif

使用:

#ifndef GAMEHANDLER_h
#define GAMEHANDLER_h

/.../

#endif

将防止多次包含,因此即使您多次包含 header 也没关系

默认情况下,class 成员在 C++ 中是私有的(更多关于访问说明符 here)。尝试将它们声明为 public.

class Condition
{
public:
  enum Rank {FIRST, SECOND, THIRD};
  void doSomething();
};

此外,您不能在 class 的声明中调用方法!您必须在方法(例如,构造函数)中执行此操作,但 where 将取决于 what 你想做什么.

class GameHandler
{
  Condition condition_;

public:
  GameHandler() {
    condition_.doSomething();
  }
}