c++ - 私有数据成员问题(可能是引用问题?)
问题描述
我很想做一个游戏。我有几个 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”内)
解决方案
推荐阅读
- angular - MediaObserver vs BreakpointObserver - 有什么区别?
- cobol - 我从 PDS 成员传递 SYSIN,在 Cobol 程序中,我是使用来自 SYSIN 的 Accept 变量的值,给出 U4038 错误
- kubernetes - 如何在我的节点中更改 PodCIDR/PodCIDR
- python - 如何使用opencv加载张量流模型
- javascript - 将 JSON 文件放在 Angular 项目中的什么位置?
- php - 如何将单元格复制到特定位置?
- jdbc - 如何将 liquibase cmd 与 db2 ssl 连接一起使用?
- reactjs - api错误401不要使用axios进入catch
- google-apps-script - UrlFetchApp.fetch(url) 失败
- python - 更简单的方法来清理文本