簡體   English   中英

將多維數組初始化為 c++ 中的 class 成員

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM