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

C++ C++;在两个头文件中包含一个类,c++,header,include,forward,C++,Header,Include,Forward,我必须为大学完成一个项目,但我不知道如何才能完成 问题是我想在GameHandler类中分配一个条件对象(不是指针),如下面的示例所示,但我不能这样做,因为我想到了Engine类中包含的Condition.h。所以我不能两次包含条件类。我是莱特吗 我该怎么做才能得到一个类似于我的错误示例的解决方案 非常感谢你 条件。h: #ifndef CONDITION_h #define CONDITION_h class Condition { enum Rank {FIRST, SECOND, T

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

问题是我想在GameHandler类中分配一个条件对象(不是指针),如下面的示例所示,但我不能这样做,因为我想到了Engine类中包含的Condition.h。所以我不能两次包含条件类。我是莱特吗

我该怎么做才能得到一个类似于我的错误示例的解决方案

非常感谢你

条件。h:

#ifndef CONDITION_h
#define CONDITION_h

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

#endif
发动机.h

#ifndef ENGINE_h
#define ENGINE_h

#include "Condition.h"

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

#endif
#ifndef GAMEHANDLER_h
#define GAMEHANDLER_h

#include "Condition.h"

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

#endif
但是现在我有了第三个类,它应该是这样的,我想创建一个条件对象(不是指针)。如何做到这一点

GameHandler.h

#ifndef ENGINE_h
#define ENGINE_h

#include "Condition.h"

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

#endif
#ifndef GAMEHANDLER_h
#define GAMEHANDLER_h

#include "Condition.h"

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

#endif
使用:

#ifndef GAMEHANDLER_h
#define GAMEHANDLER_h

/.../

#endif

将防止多个包含,所以默认情况下,如果您的页眉包含了

,C++中的类成员是私有的(更多关于访问说明符),这并不重要。尝试将它们声明为公共的

class Condition
{
public:
  enum Rank {FIRST, SECOND, THIRD};
  void doSomething();
};
此外,您不能在类的声明中调用方法!您必须在方法(例如,构造函数)中执行此操作,但where将取决于您希望执行的操作

class GameHandler
{
  Condition condition_;

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

你试过编译它吗?在我看来没问题。你不能做
condition.doSomething()条件中声明了一个默认构造函数,但你从未定义过它。(你发布的代码有其他错误,但不是那个。)@molbdnilo你是莱特!我刚刚修复了我的程序,正如您所说,我没有在Condition类中声明默认构造函数!我现在试过了,但它也有同样的问题。当我尝试在GameHandler中创建“条件”而不尝试“条件”。doSomething()时,问题就出现了。如果没有编译器的错误,我无法创建Condition对象。请检查更新后的答案,我丢失了一个错误。谢谢你们的帮助!我修复了我的问题,它与@molbdnilo所说的一模一样!很高兴帮助你们!