2

私が必要とするのは、boost::multi_array を保持できるクラスを作成することです。

そのような Double の配列が 1 つ以上あると仮定します

boost::multi_array<double, 2> array_2d; //2D array
boost::multi_array<double, 3> array_3d; //4D array
boost::multi_array<double, 4> array_4d; //5D array
etc...

必要に応じて後で正しい型を参照できる、上記のすべての型を保持できるコンテナー クラスが必要です

何かのようなもの

GenericArray<double> arr;
arr.IsEmpty() // check if it has valid ref
arr.assign(array_2d); //set reference to

次に、ある種のテンプレート ロジックを使用して配列への参照を取得します。

try{
    boost::multi_array<double, 2>& array_2d_ref = arr.get<2>
    //OR
    boost::multi_array<double, 2>& array_2d_ref = arr.get<multi_array<double, 2>>
    // First one look cleaner tho
}catch (ArrayDimentinalityMismatch e){

}

同じコード ブロック内

arr.assign(array_3d);

try{
    boost::multi_array<double, 2>& array_3d_ref=arr.get<multi_array<double, 3>>
}catch (ArrayDimentinalityMismatch e){

}

これはテンプレートを使用して可能ですか?

4

1 に答える 1