首页 > 解决方案 > 私有数据成员问题(可能是引用问题?)

问题描述

我很想做一个游戏。我有几个 cpp 和 hpp 文件,但我将包括主要思想,我想使用播放器方法move(),并使用他的卡,由地图表示,以及由地图表示的棋盘,但是当我使用方法时移动,通过移动我需要从方法“is_here”接收 true,关键 Place 是下面代码中的枚举。这是主文件代码,

int main(){
somenamespace::Board b;
somenamespace::Player p(b, somenamespace::Place::SanFrancisco);
p.take_card(somenamespace::Place::SanFrancisco);
p.move();
cout<<boolalpha<<endl;
cout << b.is_here()[Palce::SanFrancisco] << endl;
if(b.is_here()[Place::SanFrancisco]){
    cout << "all good"<<endl;
}
return 0;

打印:FLASE 这是播放器代码:

   Player(Board& board, const Place& _place);
   virtual Player& move();
        .
        .
        .
    protected:
            Board _board;             
            map<Place,MyPlace> _hand; 
            Place _place;

我有其他玩家从玩家继承,这就是他的数据成员受到保护的原因,在这种情况下,Myplace 是一个自定义对象,其中包含诸如容量等位置变量。这是 move() 方法:

 if(  _board.getMap().find(_place) != _board.getMap().end() ){
            _hand.erase(_place);
            _board.getMap()[_place] = true;
    }

现在这是董事会:

public:
map<Place,bool>& getMap();
        .
        .
        .

   private:
      
            map<Place,bool> _player_present;
    };

这是is_here的方法:

 map<Place,bool>& Board::is_here(){
        return _player_present;
    }

现在这已经很长了,但问题是如此根本,以至于我不得不给你一个大图景,玩家没有移动,我不知道为什么,有人有想法吗?我需要用 clang++-9 来遵守这一点,这是必须的。谢谢大家。(诅咒所有文件都在“somenamespace”内)

标签: c++

解决方案


推荐阅读