C ++如何包含(循环依赖)

c++ how to include (circular dependency)?

本文关键字:循环 依赖 何包含      更新时间:2023-10-16

我有 Environment.h 文件:

#include <windows.h>
#include "interfaces.h"
#ifndef ENVIRONMENT_H
#define ENVIRONMENT_H
class Environment {};
#endif

我有接口.h文件:

#ifndef INTERFACES_H
#define INTERFACES_H
class IMoving {
    public: 
        virtual void Move() = 0;          
};
#endif

在界面中,我想获得一个环境类,知道如何移动

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

如果我想这样做,我需要包括环境。

#include "Environment.h"

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

很抱歉拼写错误

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

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

class Environment;

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

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

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

否则,我通常使用转发声明