0

次のコードについて 2 つの質問があります。

  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_class-template の member-object でありlimitedSurfaceInterpolationScheme<Type>、呼び出され*thisたオブジェクト メソッドのコンテンツです。flux(...)

あいさつ

4

2 に答える 2

4
  1. tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >fluxclass からのメソッドの戻り値の型ですlimitedSurfaceInterpolationScheme<Type>メソッドtemplateではなく、クラス templateの通常のメソッドです。

  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 に答える