使用lambda函数初始化静态数据成员

时间:2017-08-20 06:55:13

标签: c++ c++11

我不熟悉在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;
}

但我收到编译错误''运算符类型为'B'和'B *'''和其他人的模糊重载。

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

1 个答案:

答案 0 :(得分:1)

我认为至少可以看到一个你的问题。您对bobj的定义是B个对象的数组:

B bobj[256]

然而,您正在尝试为其分配指针指向(使用new):

bobj[i] = new B(2)

我认为这是您所显示错误的原因ambiguous overload for 'operator=' (operand types are 'B' and 'B*')。 &#34;其他&#34;你提到我无法评论,因为你还没有向我们展示: - )