如何初始化私有多维数组

Tyl*_*ton 3 c++ initialization private class multidimensional-array

我如何初始化一个私有数组,其中每一百项都等于一个两项数组,如{-1, 0}.我的代码显然不起作用,因为我问你们所有人.

example.h文件:

#ifndef EXAMPLE
#define EXAMPLE

class Example {
private:
    char grid[10][10];
public:
    Example();
};

#endif
Run Code Online (Sandbox Code Playgroud)

example.cpp:

#include "example.h"
#include <iostream>

Example::Example() : grid({-1, 0}) {}
Run Code Online (Sandbox Code Playgroud)

Joh*_*itb 5

目前C++无法实现这一点.在C++ 0x中,可以使用大括号,例如

Example::Example() : grid{{-1, 0}} {}
Run Code Online (Sandbox Code Playgroud)

目前,您可以将该数组包装在一个类中,而不会造成任何性能损失(该数组仍将是一个普通的原生多维数组)

class Example {
private:
    struct data {
      char grid[10][10];
      static data newData() {
        data d = {{
          { -1, 0 }, { -2, 1 } /* ... */
        }};
        return d;
      }
    } d;

public:
    Example() : d(data::newData()) { }
};
Run Code Online (Sandbox Code Playgroud)