编辑:嗯,在其他人的建议下,我创建了一个最小的例子......它很有效,所以我会在这里与任何人分享它。这是工作代码:
#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,这对我来说很烦人,希望是一个错误。但除此之外,它还有效。