使用 lambda 函数初始化静态数据成员
Initialise static data members using lambda function
我对在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*')
.你提到的"其他"我真的无法评论,因为你还没有向我们展示它们:-(
相关文章:
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 静态数据成员模板专用化的实例化点在哪里
- 调用在 HXX 文件中声明的静态数据成员
- 虚拟成员函数的定义是否强制在同一转换单元中动态初始化静态数据成员?
- 错误: 无效使用非静态数据成员"应用程序::应用程序构造函数"
- 静态数据成员:它"const declaration / constexpr definition"起作用?
- 何时需要定义类的静态数据成员 (un/-)
- 为什么静态数据成员不能在c++11中的类中初始化
- 静态数据成员的模板专用化
- 拒绝包含某些公共静态数据成员的类型
- GCC:在调试构建中优化的静态数据成员
- 类模板静态数据成员定义/声明/初始化
- C++ 中的静态数据成员
- 如果类在 C++ 中具有常量或引用类型的非静态数据成员,为什么编译器不提供默认赋值运算符?
- 使用 lambda 函数初始化静态数据成员
- 引用静态数据成员
- 学习C++并在早期示例中遇到错误(在非静态数据成员之前需要构造函数)
- Windows 上的 Clang/LLVM 7 和 8 多次初始化内联静态数据成员(使用 link.exe 和 lld-
- 为什么不能使用"( )"为类的非静态数据成员提供默认值?
- 不带初始值设定项的 constexpr 静态数据成员