从constructor参数中初始化const多维数组中的const多维数组
Initialize const multidimensional array in class initializer list from constructor arguments
我有一个包括const 2D值的类,我想在调用构造函数时定义此数组。有人告诉我在不应该更改的值上使用const
是首选的,所以我想在这种情况下尝试。
class A {
public:
A(const int passedArray[2][2]) : memberArray(passedArray) {}
private:
const int memberArray[2][2];
};
const int passedArray[][2] = {
{0,0},
{0,1}
};
A a(passedArray); // fails with "incompatible types
//in assignment of 'const int (*)[2]' to 'const in[2][2]'
A a(&passedArray); // fails
这也因const int passedArray[2][2] = ...
而失败,private: const int** memberArray
等。
我知道我必须使用初始化列表,因为构造函数无法更改const的值。这根本可以在C 11?
对您的问题的评论有一些很好的信息。
之后,这是工作代码:
//g++ 5.4.0
#include <iostream>
class A {
public:
A(int passedArray[2][2])
{
//USE STD COPY TO COPY THE ARRAYS.
std::copy(&passedArray[0][0], &passedArray[0][0]+4,&memberArray[0][0]);
//PRINT VALUES TO TEST
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
std::cout << memberArray[i][j] << std::endl;
}
}
}
private:
int memberArray[2][2];
};
int main()
{
//INITIALIZE YOUR ARRAY
int passedArray[2][2] = {
{0,0},
{0,1}
};
//CREATE OBJECT
A a(passedArray);
}
如果您的业务需要是"班级中的const多维数组"您必须这样做以下任何一种方法。
class A {
public:
A(const int passedArray[2][2])
{
}
private:
const int memberArray[2][2] = {{5,6},{7,8}}; //INITIALIZE HERE
};
或
class A {
public:
A(const int passedArray[2][2])
{
}
private:
//DECLARE STATIC HERE
static const int memberArray[2][2];
};
//INTIALIZE HERE
const int A::memberArray[2][2] = {{5,6},{7,8}};
相关文章:
- 使用对const结构的const数组的引用进行构造
- 初始化类中的静态 const 数组 - C++
- 如何定义在编译时数据未知的 const 数组
- 如何使用函数的输出初始化 const 数组结构字段?
- 是否允许使用初始值设定项列表将const数组引用实例化为构造函数参数
- const 数组,用于在数组长度定义中使用其元素或为模板参数提供值
- 如何访问一系列const变量作为const数组
- 如果在执行过程中替换二进制文件,"const"数组是否驻留在内存中?
- 在源文件中定义 const 数组
- 具有成员变量的对象 Const 数组 = 先前索引成员变量的总和
- 在构造函数中初始化const数组
- 在编译时使用基于模板的长度初始化 const 数组
- 传递const数组时的C 误差区分专业
- c++中const数组的平均值模板
- 如何在类中存储const数组
- 为什么 const 数组优先绑定到 const T& 参数而不是 T&& 参数?
- 如何将静态 const 数组声明和初始化为类成员
- 从 constexpr 构造 const 数组
- 静态 const 数组在 MSVC 中动态初始化
- 使用 const 数组元素初始化