0
我是新近使用C++中的lambda函數的概念。我的目標是使用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函數來初始化一個對象數組?
其實我有一個模板類。類類型將被傳遞用於其創建,並且需要創建其類型的數組 - 對象數組將被用於預先設計的有限可用數據。 – Prakash
爲什麼你不能在'if' bobj [0] == nullptr''的控制下在'A'的構造函數中完成這個工作? – paxdiablo
原因是在這種情況下,它是B類,但實際上A是一個模板類 - 它可以是任何類類型 - https://stackoverflow.com/questions/45778336/initialise-large-static-class-array – Prakash