C++ Lambda在cpp中转换为nullptr

C++ Lambda在cpp中转换为nullptr,c++,lambda,C++,Lambda,鉴于以下类别: class A { std::function<void()> callback; public: A(std::function<void()> cb) { callback = cb; } void trigger() { if (callback != nullptr) callback(); } }; class B { public: A array[

鉴于以下类别:

class A
{
    std::function<void()> callback;

public:

    A(std::function<void()> cb) { callback = cb; }

    void trigger()
    {
        if (callback != nullptr)
            callback();
    }
};

class B
{
public:
    A array[1] = {
        { [=]() { std::cout << "hello"; } }
    };
};

int main()
{
    B b;
    b.array[0].trigger();
}
A类
{
函数回调;
公众:
(std::function cb){callback=cb;}
无效触发器()
{
if(回调!=nullptr)
回调();
}
};
B类
{
公众:
数组[1]={

{[=](){std::cout这是您的代码修复:

#include <iostream>
#include <functional>

class A
{
    std::function<void()> callback;

public:

    A(std::function<void()> cb) { callback = cb; }

    void trigger()
    {
        if (callback != nullptr)
            callback();
    }
};

class B
{
public:
    A array[1] = {
        { [=]() { std::cout << "hello"; } }
    };
};

int main()
{
    B b;
    b.array[0].trigger();
}
#包括
#包括
甲级
{
函数回调;
公众:
(std::function cb){callback=cb;}
无效触发器()
{
if(回调!=nullptr)
回调();
}
};
B类
{
公众:
数组[1]={

{[=](){std::cout请提供一个。您的代码无法编译。−1为什么你要发布未编译的代码?为什么不发布真正的代码?投票结束,因为缺少可复制的示例。这段代码确实充满了小错误。缺少分号,试图访问私有成员。函数声明在main中,而不是创建类型B的变量…为未编译的代码道歉。我是说nt认为它是一个有代表性的例子,因为我的实际代码非常复杂。我现在正在编辑这个问题以使其能够编译。但是正如Killzone的回答所说的那样。一旦错误被解决,这个代码就可以正常工作和运行。谢谢你。如上所述,我会明白为什么这个问题有效,但我的代码不能。