gpt4 book ai didi

c++ - 复制构造函数中的无限递归

转载 作者:行者123 更新时间:2023-11-30 02:49:01 25 4
gpt4 key购买 nike

我在程序的一部分遇到了问题,我将一个充当 lambda 函数的对象传递给另一个函数(我需要捕获一个 const this 指针,所以我不能使用实际的 lambda)。这导致我的 lambda 的复制构造函数被调用,它再次调用复制构造函数,最终堆栈溢出。我明白发生了什么,但我不确定复制构造函数为何调用自身或如何解决此问题。我在下面重现了这个问题。

编译器:MSVC 2010

#include <functional>

void synchronizedExecution(std::function<void()> function) {
function();
}

int main(int argc, char *argv[])
{

int b = 0;

class Function : public std::function<void()> {
public:
int& b;
Function(int& b) :
b(b) {}
void operator()() {}
} function(b);

synchronizedExecution(function);

return 0;
}

最佳答案

我可以在“如何解决这个问题”部分帮助您 - 将您的功能更改为

void synchronizedExecution(const std::function<void()>& function)

关于c++ - 复制构造函数中的无限递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21612587/

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