0

我对以下代码有两个问题:

  211 template<class Type>
  212 tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >
  213 limitedSurfaceInterpolationScheme<Type>::flux //Return the interpolation  
                                                    //weighting factors.
  214 (                                             
  215     const GeometricField<Type, fvPatchField, volMesh>& phi
  216 ) const
  217 {
  218     return faceFlux_*this->interpolate(phi); //const surfaceScalarField& 
  219 }                                            //faceFlux_
  1. 第 211 - 213 行:显示的方法flux(...)应该是返回类型为 的方法模板limitedSurfaceInterpolationScheme<Type>。在这方面到底是什么tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >意思?

  2. 第 218 行:faceFlux_*this做什么?faceFlux_是类模板的成员对象,limitedSurfaceInterpolationScheme<Type>是被调用*this的对象方法的内容。flux(...)

直接问候

4

2 回答 2

4
  1. tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >是类方法的返回flux类型limitedSurfaceInterpolationScheme<Type>这是来自类模板的普通方法,而不是方法模板

  2. faceFlux_*this->interpolate(phi);完全一样faceFlux_*(this->interpolate(phi));- 它是乘法。

于 2014-01-19T17:44:04.320 回答
1

确实,清晰的写作会清楚地说明

  template<class Type>
  tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >
  limitedSurfaceInterpolationScheme<Type>::flux(const GeometricField<Type,fvPatchField,volMesh> &phi ) const
   {
     return faceFlux_  *  this->interpolate(phi);  
   }     

所以从上面很明显,它是在标题中定义的函数的实现。

template<class Type>
class limitedSurfaceInterpolationScheme
{
  //before  c++ 11 we had to write nested template right angle bracket with space > >
//return_type fun_name(argument) 
tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >  flux(const GeometricField<Type,fvPatchField,volMesh> &phi ) const ;// constant member function

}

有关更多信息,请参阅如何在 .h 文件中定义模板类并在 .cpp 文件中实现它

于 2014-01-19T17:49:39.753 回答