OpenFOAM 库定义了两种类型,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 特有的特性。