C++ 中是否有类似于 Java 中的弱引用的东西?我有游戏中的对象列表(士兵类,列表是 std::list* 敌人),其中我持有可见敌方士兵的列表。我的每个士兵都可以有指向敌方士兵的指针(士兵*目标;类内)。当其他地雷士兵杀死敌方士兵时我需要什么(然后将被杀死的士兵从敌人列表中删除)我希望我所有以该士兵指针为目标的士兵现在都为空,因为它已被删除。我可以用士兵的 id 解决这个问题,并且在每个循环中检查是否有具有相同 id 的敌方士兵,但它似乎是蛮力的。我可以用更优雅的方式解决这个问题吗(我不能使用 c++11?
class Soldier{
Soldier* target;
public:
// other functions
void shootAtTarget();
};