3

编辑:嗯,在其他人的建议下,我创建了一个最小的例子......它很有效,所以我会在这里与任何人分享它。这是工作代码:

#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,这对我来说很烦人,希望是一个错误。但除此之外,它还有效。

4

1 回答 1

4

你不能通过NULL,但你可以通过nullptr

于 2012-07-19T18:41:55.650 回答