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();
}
}
我必须完成一个大学项目,但我不知道如何完成。
问题是我想在 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();
}
}