私は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} });
同じことが割り当てによる構築にも当てはまります。 正確なエラー・メッセージがある:C++標準の初期リスト当たり
'Matrix(double(&values)[] [N]);' –
これはうまくいきませんでした – Paranaix
申し訳ありません、私の悪いです。 'Matrix(const double(&values)[M] [N]);は動作します。 –