c++从另一个对象赋值失败

c++ assigning Object values from another object fail

本文关键字:赋值 失败 一个对象 c++      更新时间:2023-10-16

我的代码目前有一些主要问题,我希望有人能指点一下。

在我的代码中我做了;[2];[i] = new Player();在for循环中。给它们一个真实的值

在后面的代码中,我想这样做:

players[0] = players[1];
delete players[1];

而调试。Players[0]获取Players[1]的值。但是下一行玩家[0]得到;字符串名称= <坏Ptr>和一些int值一起变成-17912312。

我的第一个想法是我需要在Player中创建一个operator= s。我创建了:

Player& operator=(const Player& right);

Player& Player::operator=(const Player& right)
{
this->name=right.name;
this->coins=right.coins;
this->bet=right.bet;
return *this;
}

这没有效果。它甚至没有进入函数。为什么我不能赋值?

所示代码players[0] = players[1];将泄漏最初由players[0]指向的对象。在下一个语句中,你把对象放到一个指针后面,你现在在两个槽中都有一个指针。如果您不立即将其设置为NULL,那么您持有的悬空指针将无法用于任何事情。

写op=与这种情况完全无关,您不应该这样做。

这是一个悬空指针问题。当你赋值

players[0] = players[1];

和立即删除播放器[1]后,你实际上使两个内存位置不可访问。你能把你的目标解释清楚一点吗?如前所述,不能对指针进行operator=重载。为什么你一开始就需要移除玩家[1]?当你澄清的时候,会用更新的建议进行编辑!