gpt4 book ai didi

C++ lambda 代表

转载 作者:太空狗 更新时间:2023-10-29 21:04:17 25 4
gpt4 key购买 nike

编辑:好吧,根据其他人的建议,我创建了一个最小的示例......并且它有效,因此我将在未来与任何人分享它。这是工作代码:

#include <iostream>
#include <functional>

using namespace std;

class myClass
{
char* str;
public:
myClass()
{
str = "";
}

void funcA()
{
funcB([](myClass* mc)
{
mc->str = "HelloWorld";
}
);
}

void funcB(std::function<void (myClass*)> otherFunc)
{
otherFunc(this);
}

void printStr()
{
cout << str;
}
};

int main()
{
myClass mc;
mc.funcA();
mc.printStr();
int done;
cin >> done;
}

我的原始代码不起作用的原因是因为我将 funcB 的声明和实现分成两部分(.h 和 .cpp),并且在 .h 中我这样做了

void funcB(std::function<void (myClass*)> otherFunc = NULL)

据我所知,你绝对不能在这里传递 NULL,这让我很烦,希望是一个错误。但除此之外,它还有效。

最佳答案

你不能传递NULL,但你可以传递nullptr

关于C++ lambda 代表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11565817/

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