c++ - 检测是否调用了析构函数
问题描述
我正在制作一个棋盘游戏,当一个棋子被摧毁时游戏结束,例如一个国王在国际象棋中死去。
现在我有可能搜索我所有的对象并看到例如有两个指向国王对象的指针,现在只有一个,因此游戏结束,剩下的国王队获胜。
然而,我想知道是否可以这样说:
if(king_destructor is called){
game over;}
但经过一番搜索后,我还没有找到一种方法来做到这一点。
更具体地说,我的班级结构是:
class pieces{}
class king : public pieces{}
其中pieces 是一个抽象类,每个单独的部分都有派生类。在“国王”部分的派生类中有它的析构函数。除此以外:
class game_board{}
这是另一个具有数据成员的抽象类,这些数据成员是指向片段对象的指针。确切地说,我有一个 map 变量,它将棋子在棋盘上的位置作为键,将指向棋子对象的指针作为值。
最后我有一个派生类:
class game_rules: public game_board{}
在这个类中,我有一个函数可以检测游戏何时结束。
我尝试使用由“国王”析构函数修改的静态变量,但这超出了我的 game_rules 类的范围。
有谁知道这是否可能?
解决方案
可能有几种方法可以实现这样的东西。你的描述让我印象深刻的是从棋盘位置到棋子指针的地图。你没有指定什么样的指针,所以我会即兴发挥。假设地图持有指向片段的共享指针。然后game_board
可以保持指向s 的弱指针king
。您可以简单地查看弱指针是否已过期,而不是搜索所有部分。这不仅可以告诉您游戏是否结束,还可以告诉您谁输了。
推荐阅读
- google-cloud-dataflow - Splittable DoFn 导致 Shuffle key 太大的问题
- oracle - 向用户授予资源以创建表
- php - 从 JSON 编码中删除数组方括号 | PDO
- python - 有没有办法使用 pip 安装 psycopg2 而无需在主机系统上安装 postgres
- java - Eclipse,Java,Junit4,我想黑盒测试一个jar文件。在设置方面需要一点帮助
- dc.js - dc-js 中是否有 underlayCallback 函数?
- common-lisp - 有条件地调用宏中的键控参数
- asp.net-core - 如何生成 Audit.EntityFramework.Core 使用的数据库表
- javascript - 将 HTML 插入用户字符串并在 React 中呈现(并避免 XSS 威胁)
- hyperledger-composer - 有没有超级账本作曲家的替代品?