gpt4 book ai didi

c++ - 如何解决递归变量

转载 作者:搜寻专家 更新时间:2023-10-31 02:12:48 25 4
gpt4 key购买 nike

我试图了解 boost::recursive_wrapper 的工作原理,我编写了以下测试代码。我认为使用指针足以解决递归问题。但是,以下代码编译成功,但在尝试创建 'a' 时出现运行时错误。知道它为什么会失败以及 boost::recursive_wrapper 为什么会起作用。

template<class T>
class w
{
public:
w();
private:
T *p;
};

template <class T>
w<T>::w():p(new T)
{

}

struct list
{
int val;
//boost::recursive_wrapper<list> Next;
w<list> Next;

};

void main()
{
list a;
}

最佳答案

构造函数中的p(new T)部分会导致运行时无限递归。

线

list a;

通话

list::list()

调用

w<list>::w() : p (new list)

调用

list::list()

它会递归直到发生堆栈溢出。

改用p(nullptr)

template <class T>
w<T>::w() : p(nullptr)
{
}

关于c++ - 如何解决递归变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42282000/

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