c++ - 如何初始化私有(private)多维数组

标签 c++ class multidimensional-array initialization private

我将如何初始化一个私有(private)数组,其中一百个项目中的每一个都等于一个包含两项的数组,例如 {-1, 0}。我下面的代码显然不起作用,因为我问你们所有人。

例子.h:

#ifndef EXAMPLE
#define EXAMPLE

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

#endif

例子.cpp:

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

Example::Example() : grid({-1, 0}) {}

最佳答案

这在 C++ 中目前是不可能的。在 C++0x 中,可以使用大括号,例如

Example::Example() : grid{{-1, 0}} {}

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

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()) { }
};

关于c++ - 如何初始化私有(private)多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5532884/

相关文章:

c++ - 是否可以在没有密码的情况下使用 LogonUser API?

c++ - Qt5 哈希函数不会在 Windows 7 和 Windows 10 上返回相同的哈希值

C++, union 与类继承

php - 根据值对二维数组进行分组

java - 如何显示二维数组的行数和列数?

java - 如何将不均匀的二维数组连接成一维数组(java)

c++ - 将宏重载为变量和函数

c++ - C++中根据字符串创建对象

c++ - 在 boost.python 中;如何公开包含在另一个类中的类(通过组合)?

r - 从 R 中的另一个包为泛型创建新方法