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 で、環境クラスを取得して、移動方法を知りたい

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)。それがあなたの問題の原因でしょうか?

それ以外の場合は、通常、Forwarded Declarationを使用します

于 2012-05-16T05:58:23.730 に答える
4

循環依存の場合、Forward 宣言を使用できます。

インターフェイス定義のすぐ上の Interfaces.h で、次のように前方宣言Environmentします。

class Environment;

次に、IMoving をクラスに実装するときに、Environment.h をその実装 (cpp) ファイルに含めます。

Forward 宣言の詳細については、こちらを参照してください。

于 2012-05-16T05:59:38.630 に答える