我是在C ++中使用lambda函数的概念的新手。我的目标是使用lambda函数初始化对象的静态数据成员数组。下面是我的代码-

#include <iostream>
class B
{
    public:
    B() {std::cout << "B Called" <<std::endl;}
    B(int y){std::cout << "B int Called" <<std::endl;}
};
class A
{
    public:
    A(){std::cout << "Called" << std::endl;}
    static B bobj[256];
};

B bobj[256] = [] () {for (int i = 0 ; i < 256; i++) { bobj[i] = new B(2)}};

int main()
{
    A a;
}


但是我收到了编译错误“'operator ='(操作数类型为'B'和'B *')”以及其他错误。

如何编写lambda函数来初始化对象数组?

最佳答案

我认为至少看到了您的问题之一。您对bobj的定义是B对象的数组:

B bobj[256]


但是,您正在尝试为其分配一个指向B的指针(通过使用new):

bobj[i] = new B(2)


我相信这是导致您显示错误的原因,ambiguous overload for 'operator=' (operand types are 'B' and 'B*')。您提到的“其他”我无法真正发表评论,因为您没有向我们展示它们:-)

关于c++ - 使用lambda函数初始化静态数据成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45779315/

10-09 13:34