我是在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/