我不熟悉在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函数来初始化对象数组?
答案 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;你提到我无法评论,因为你还没有向我们展示: - )