我在C++中編寫了一個通用的矩陣類。我想能夠從一個二維雙數組中初始化一個矩陣。因爲我正在使用模板,因此在編譯時需要知道矩陣大小,所以我想確保給定大小的數組可以傳遞給構造函數。表示在代碼是這樣的:固定大小的多維數組參數
template<unsigned int M, unsigned int N>
class Matrix {
public:
Matrix(double (&values)[M][N]);
}
現在,來這裏的奇數部分:像預期的下面的代碼工作就像一個魅力:
double arr [3][3] = { {1,2,3},
{1,2,3},
{1,2,3} };
Matrix<3,3>* mat3x3p = new Matrix<3,3>(arr);
但傳遞數組時,匿名代碼被打破:
Matrix<3,3>* mat3x3p = new Matrix<3,3>({ {1,2,3},
{1,2,3},
{1,2,3} });
這同樣適用於施工通過作業。 確切的錯誤信息是:
no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘double (&)[3][3]’
嘗試與矩陣(雙(&值)[] [N]);' – 2012-03-20 17:30:37
那沒有工作 – Paranaix 2012-03-20 17:43:15
對不起,我的壞。 '矩陣(const double(&values)[M] [N]);'應該工作。 – 2012-03-20 17:57:15