c ++从另一个对象分配对象失败

时间:2013-06-11 18:33:38

标签: c++ arrays object assign

目前我的代码存在一些重大问题,我希望有人可以对此进行说明。

在我的代码中,我做了;球员=新球员* [2];与球员一起[i] =新球员();在for循环中。给他们真正的价值观。

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

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

调试时。玩家[0]获得玩家的价值[1]。但下一线球员[0]得到了; string name =< Bad Ptr>以及一些成为-17912312的int值。

我的第一个想法是我需要在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;
}

这没有效果。它甚至没有进入这个功能。为什么我不能分配值?

2 个答案:

答案 0 :(得分:0)

显示的代码players[0] = players[1];中的

将泄漏players[0]最初指向的对象。在下一个语句中,您可以在两个插槽中查看一个指针后面的对象。如果你没有立即将它设置为NULL,那么你将持有任何不可用的悬空指针。

写op =与案件完全无关,你不应该这样做。

答案 1 :(得分:0)

这是一个悬垂的指针问题。进行作业时

players[0] = players[1];

删除播放器[1]后,您实际上无法使两个内存位置都无法访问。你能解释一下你的目标好一点吗?就像已经说过的那样,你不能为指针做一个operator = overload。为什么你需要首先移除玩家[1]?当您澄清时,将使用更新的建议进行编辑!