c++从另一个对象赋值失败
c++ assigning Object values from another object fail
我的代码目前有一些主要问题,我希望有人能指点一下。
在我的代码中我做了;[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]?当你澄清的时候,会用更新的建议进行编辑!
相关文章:
- 为"adjacent"变量赋值时出现问题
- C++中的赋值发生,尽管右侧出现异常
- 用C++中的sscanf赋值
- 为std::string的某个索引赋值
- 重载Singly Linked List中的赋值运算符
- 为什么我必须在C++中添加一个赋值符号来声明一个数组
- gtest_使用setargpointee在函数中赋值
- 非常量变量只读位置的赋值
- 使用赋值运算符重载从类中返回jobject
- C++数据文件、数组和计算赋值
- 为什么在使用转换构造函数赋值后调用C++类的析构函数?
- 全局作用域中函数指针的赋值
- 错误:在为指针赋值时,void值没有被忽略
- 标准库类型的赋值运算符的引用限定符
- 关于 c++ 函数中指针赋值的简单问题
- 结构化绑定初始值设定项表单 { 赋值表达式 } 对于 clang 上的数组类型失败
- 为什么在函数参数中使用赋值运算符会失败
- 模板化赋值运算符模板实例化失败
- c++从另一个对象赋值失败
- 自定义类的Static_cast会导致复制赋值失败