我有一個包含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