将一个多维数组初始化为一个类 c++中的成员

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将一个多维数组初始化为一个类 c++中的成员相关的知识,希望对你有一定的参考价值。

我有一个类,比方说,我想在构造函数中初始化Children参数:

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;
        }

    }

}

我可以把初始值赋给 Sizethis->Size= 0.5/Index但我无法初始化Children;Visual Studio在以下情况下给了我一个错误信息 this->Children = {} 说:"表达式必须有一个可修改的值"。"表达式必须有一个可修改的l值"。为什么会这样呢?

答案

正如@L.F.和@UnholySheep所指出的那样,为了给类中的 Children 变量,它应该被添加到成员初始化器列表中,像这样。

Foo::Foo(const unsigned int index) : Index(index), Children(), Size(0.5/index) {}

这将会把Children变量初始化为一个全0的数组,然后可以在构造函数中进一步修改。

以上是关于将一个多维数组初始化为一个类 c++中的成员的主要内容,如果未能解决你的问题,请参考以下文章

在c ++中将多维数组初始化为类成员

如何将二维数组的所有元素初始化为java中的任何特定值

在 C++ 中初始化动态二维数组

C++ 如何将一个静态结构体数组初始化?

C++中,类内的成员变量自动初始化为零吗,而全局变量随意赋值

C++中的数组类成员初始化