gpt4 book ai didi

c++ - 运算符重载工作但在 C++ 中出现堆栈溢出和崩溃

转载 作者:搜寻专家 更新时间:2023-10-31 00:05:27 24 4
gpt4 key购买 nike

我编写了这个 Node 类和 = 运算符重载函数,这是我可以让它编译和运行的唯一方法,但它只会溢出并轰炸我的程序。有人可以修复它以便它工作。我对 C++ 中的重载运算符没有太多经验。我只想将一个 Node 对象设置为等于另一个 Node 对象。提前致谢!

class Node
{
public:
Node();
int y;
Node& operator=(const Node& n);
};

Node::Node(){ y = -1; }
Node& Node::operator=(const Node& n) { return *this = n; }

.

Build issues:
1>c:\users\aaron mckellar\documents\school stuff\cs445\test\test\main.cpp(57) : warning C4717: 'Node::operator=' : recursive on all control paths, function will cause runtime stack overflow
1>Linking...
1>LINK : C:\Users\Aaron McKellar\Documents\School Stuff\CS445\Test\Debug\Test.exe not found or not built by the last incremental link; performing full link

最佳答案

在您的 operator= 中,您需要将成员变量设置为等于传入的节点值。

Node& Node::operator=(const Node& n) 
{
y = n.y;
return *this;
}

你用英语做了一个对应的例子:狗的定义是一只狗。与其说狗的定义是狼的驯化形式,不如说是食肉目犬科的一员。

关于c++ - 运算符重载工作但在 C++ 中出现堆栈溢出和崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2308391/

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