我有Environment.h文件:
#include <windows.h>
#include "interfaces.h"
#ifndef ENVIRONMENT_H
#define ENVIRONMENT_H
class Environment {};
#endif
我有Interfaces.h文件:
#ifndef INTERFACES_H
#define INTERFACES_H
class IMoving {
public:
virtual void Move() = 0;
};
#endif
在界面中我想获得一个环境类,知道如何移动
class IMoving {
public:
virtual void Move(Environment*) = 0;
};
如果我想这样做,我需要包括environment.h
#include "Environment.h"
这里我得到一个错误,因为Environment.h - 包括Interfaces.h和Interfaces.h - 包括Environtment.h。那么如何让它发挥作用呢?
对不起拼写错误
答案 0 :(得分:5)
对于circular dependencies,可以使用前向声明
在接口定义上方的Interfaces.h中,转发声明Environment
如下:
class Environment;
然后,当您在类中实现IMoving时,您将在其实现文件中包含Environment.h。
您可以阅读有关转发声明here的更多信息。
答案 1 :(得分:4)
看起来你几次拼错了班级名称(环境,环境)。这可能是你问题的根源吗?
否则我通常使用Forwarded Declaration