0

重複の可能性:
ヘッダーによる循環依存。#ifndef と #define の使用

そのヘッダー ファイル内のクラスに拡張するクラスを含むヘッダー ファイルをインポートしようとしましたが、機能しません:S

TileGrass.h:

#ifndef TILEGRASS_H_
#define TILEGRASS_H_

#include "Tile.h"

class TileGrass : public Tile
{
    public:
        TileGrass(unsigned char);
};

#endif /* TILEGRASS_H_ */

Tile.h:

#ifndef TILE_H_
#define TILE_H_

class Tile
{
    public:
        Tile(unsigned char);
        unsigned char id;
};

#include "TileGrass.h"

extern Tile* tiles[256];
TileGrass tileGrass = TileGrass(0);

#endif /* TILE_H_ */

これを行うとエラーが表示されます: エラー: 'TileGrass' は型に名前を付けていません

4

1 に答える 1

1

一見すると、次の 2 つのエラーが表示されます。

  • 不要な循環インクルード (インクルードする必要Tile.hはありませんTileGrass.h- ファイルを再編成してインクルードを削除するだけです)
  • TileGrass tileGrass = TileGrass(0);は定義であり、ヘッダーにあるため、ヘッダーを複数回含めると、複数定義エラーが発生します。グローバルが必要な場合 (考え直してください)、使用する必要がありますextern
于 2013-01-07T19:45:26.713 に答える