前向声明与使用类方法

时间:2016-04-20 16:58:41

标签: c++

我有这样的逻辑:

GameMap包括PlayerPlayer包括EntityPlayer的超类)。 EntityPlayer都使用GameMap对象。

// GameMap.h
#pragma once
#include "Player.h"
class GameMap
{
public:
    bool isTileSolid(GameMap & map, int tileX, int tileY);
};



// Player.h
#pragma once
#include "Entity.h"
class Player : public Entity
{
public:
    bool collides(GameMap & map);
};


// Entity.h
#pragma once
class GameMap; // Forward declaration instead of including GameMap.h (it would not even compile)
class Entity {
};




// Player.cpp
#include "stdafx.h"
#include "Player.h"
bool Player::collides(GameMap & map)
{
    if (map.isTileSolid(map, 0, 0)) // BEEP! incomplete type not allowed
        return true;

    return false;
}

如何让方法isTileSolid(...)在播放器源文件中运行?我也可以为该方法做出某种前瞻性声明吗?

0 个答案:

没有答案