如何初始化私有多维数组
How to Initialize a Private Multidimensional Array
如何初始化一个私有数组,其中一百项每个等于一个两项数组,例如{-1, 0}
。我下面的代码显然不工作,因为我问你所有。
example.h:
#ifndef EXAMPLE
#define EXAMPLE
class Example {
private:
char grid[10][10];
public:
Example();
};
#endif
example.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()) { }
};
不幸的是,您不能这样初始化成员。你必须使用std::fill
(或旧的=
和循环)手动为构造函数体中的每个值赋值。
这将在c++ 0x中改变,但是,在c++ 0x中,您可以编写像您发布的代码一样的代码。
(另外,你的问题不匹配。您声明了一个由10个数组组成的数组,每个数组有10个字符,但是您的初始化尝试与该用例没有任何相似之处。这不是很清楚你想做什么,但由于你必须使用不同的方法,我想这对这个答案并不重要
相关文章:
- C++使用整数的压缩数组初始化对象
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 字节数组初始化会导致 DirectX 崩溃
- 使用 new 和 值进行数组初始化,但没有显式数量的元素
- 运行时C++数组初始化问题
- 使用带有参数包的数组的成员数组初始化类
- 仅通过C++中数组初始化的不同方法,即可在同一输入上获得两个不同的答案
- C++ 2 个指针数组初始化 C2440
- C++结构字符数组初始化
- C++中的多维数组初始化
- constexpr数组初始化
- C++引物动态数组初始化程序的数目超过大小
- 使用std::index_sequence对std::数组初始化进行包扩展
- 当 std 数组初始化太小时,C++会引发错误吗?
- 如何确定结构数组初始化的大小?
- Qt并发错误:数组初始化需要大括号括起来的初始值设定项列表
- 此代码中的数组初始化样式是什么?这是标准的吗?
- C++ 使用数组初始化时的 STL 向量内存管理