2

我有 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

在 IMoving 界面中,我想获得一个 Environment 类,以了解如何移动

class IMoving {
    public: 
        virtual void Move(Environment*) = 0;          
};

如果我想这样做,我需要包含 environment.h

#include "Environment.h"

在这里我得到一个错误,因为 Environment.h - 包括 Interfaces.h 和 Interfaces.h - 包括 Environtment.h。那么如何使它工作呢?

抱歉拼写错误

4

2 回答 2

4

看起来你拼错了几次类名(Environtment,Envrirontment)。这可能是您问题的根源吗?

否则我通常使用转发声明

于 2012-05-16T05:58:23.730 回答
4

对于循环依赖,可以使用前向声明

在接口定义上方的 Interfaces.h 中,前向声明Environment如下:

class Environment;

然后,当您在一个类中实现 IMoving 时,您将在其实现 (cpp) 文件中包含 Environment.h。

您可以在此处阅读有关前向声明的更多信息。

于 2012-05-16T05:59:38.630 回答