OpenFOAM ライブラリは と の 2 つの型を定義してvolMesh
おりsurfaceMesh
、どちらも を継承していGeoMesh<fvMesh>
ます。引数を受け取る関数を定義したい:
void foo(GeometricField<vector, fvsPatchField, GeoMesh<fvMesh> >& field) { ... }
ただし、関数を呼び出そうとすると、g++ で「参照型の初期化が無効です」というエラーが表示されます。
// surfaceVectorField is a typedef GeometricField<vector, fvsPatchField, surfaceMesh>
surfaceVectorField Uf( /* initialisation arguments */ );
foo(Uf);
Java のバックグラウンドから来て、この問題は次のような宣言を使用するのを忘れることに似ているようです。
void foo(GeometricField<vector, fvsPatchField, ? extends GeoMesh<fvMesh>> field) { ... }
可能であれば、C++11 固有の機能を避ける必要があります。