gpt4 book ai didi

c++ - operator =重载,终止符递归调用

转载 作者:行者123 更新时间:2023-12-02 10:11:47 36 4
gpt4 key购买 nike

我在重载赋值运算符时遇到问题。我在控制台中收到“终止符称为递归”错误。
我对数据结构比较陌生,无法调试此问题。
这是类声明:

class Player
{
public:
Player(const unsigned int x_, const unsigned int y_, const char i_);
Player(const Player& p_);
~Player();

unsigned int getX() const;
unsigned int getY() const;
char getI() const;

void updatePosition(int newX, int newY);

Player& operator=(const Player& p_);
private:
struct Position{
unsigned int x;
unsigned int y;
};

Position* pos;

char i;
};
这是operator =函数的实现:
Player& Player::operator=(const Player& p_)
{
delete pos;
pos = nullptr;

pos = new Position();
pos->x = p_.getX();
pos->y = p_.getY();

i = p_.getI();

return *this;
}

最佳答案

我认为使用Position* pos并不是一个好选择。
您始终必须通过构造函数对其进行初始化。
尽管您这样做了,但在Player& operator=(const Player& p_)中,
我认为第一行和第二行有麻烦。
您已经通过pos删除了内存中的delete pos但是您正在尝试将pos设置为nullptr

关于c++ - operator =重载,终止符递归调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63256659/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com