在C++中是否有类似于Java中的弱引用?
我有一个游戏对象列表(Soldier类,列表为std::list* enemy),其中我保存可见敌方士兵的列表。每个我方士兵都可以拥有指向敌方士兵的指针(在类内部是Soldier* target;)。当其他我方士兵杀死敌方士兵时(被杀士兵从敌方列表中删除),我希望所有拥有该士兵指针作为目标的我方士兵现在都为null,因为它已被删除。我可以通过士兵的id来解决这个问题,并在每次循环中检查是否有相同id的敌方士兵,但这似乎太过暴力。我能否以更优雅的方式解决这个问题(我不能使用c++11)?
class Soldier{
Soldier* target;
public:
// other functions
void shootAtTarget();
};