C ++在两个头文件

时间:2017-05-02 12:27:59

标签: c++ header include forward

我必须为大学完成一个项目,但我无法弄清楚它是如何完成的。

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

我能做些什么来获得类似我错误示例的解决方案?

非常感谢!!!

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

但是现在我有了第三个类,它应该看起来像我要创建一个条件对象(不是指针)。怎么办呢?

GameHandler.h

#ifndef GAMEHANDLER_h
#define GAMEHANDLER_h

#include "Condition.h"

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

#endif

2 个答案:

答案 0 :(得分:0)

使用:

#ifndef GAMEHANDLER_h
#define GAMEHANDLER_h

/.../

#endif

会阻止多次包含,因此如果多次包含标题无关紧要

答案 1 :(得分:0)

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

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

另外,你不能在类的声明中调用方法!您必须在方法内部(例如,构造函数)执行此操作,但其中将依赖于您想要执行的操作。

class GameHandler
{
  Condition condition_;

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