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

Initialise static data members using lambda function

本文关键字:静态 数据成员 初始化 函数 lambda 使用      更新时间:2023-10-16

我对在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*').你提到的"其他"我真的无法评论,因为你还没有向我们展示它们:-(