我有一个包含const 2d值数组的类,我想在调用构造函数时定义这个数组。我被告知使用const
上的值应该永远不会改变是首选,所以我想在这种情况下尝试。从构造函数参数初始化类初始化程序列表中的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
等
我知道我必须使用初始化列表,因为构造函数不能改变常量的值。这在C++ 11中完全可能吗?
不能按值传递数组,而你不能复制初始化数组。然而,你可以用元素初始化数组元素:':memberArray {{rhs [0] [0],...}}'或者使用'std :: array,2>'完成。 –
在类成员上使用'const'通常是一个糟糕的主意IMO –
@ M.M完全相反......如果除非初始化,否则不要修改它们,否则应始终使成员保持不变。 – Phil1970