[英]Initialize a multidimensional array as a class Member in c++
我有一個 class,讓我們說:
class Foo
{
public:
unsigned int Index;
float Size;
Foo(const unsigned int index);
~Foo();
private:
int Children[2][2];
};
我想在構造函數中初始化 Children 參數:
Foo::Foo(const unsigned int index) : Index(index)
{
this->Size = 0.5 / index;
this->Children = {};
if (index < MAX_DIVS) {
for (int _x = 0; _x < 2; _x++) {
for (int _y = 0; _y < 2; _y++) {
this->Children[_x][_y] = 0;
}
}
}
我可以將初始值分配給Size
執行this->Size= 0.5/Index
,但我無法初始化 Children; Visual Studio 在this->Children = {}
上給我一個錯誤,說:“表達式必須有一個可修改的左值”。 為什么?
正如@LF 和@UnholySheep 所指出的,要為Children
變量設置默認值,應將其添加到成員初始化器列表中,如下所示:
Foo::Foo(const unsigned int index) : Index(index), Children(), Size(0.5/index) {}
這會將變量 Children 初始化為全 0 數組,然后可以在構造函數中進一步修改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.