我对以下代码有两个问题:
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_
第211-213行:显示的方法flux(...)
应该是一个方法模板,其中返回类型为limitedSurfaceInterpolationScheme<Type>
。这个连接中的tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >
究竟意味着什么?
第218行:faceFlux_*this
做了什么? faceFlux_
是类模板limitedSurfaceInterpolationScheme<Type>
的成员对象,*this
是调用对象方法flux(...)
的内容。
问候 streight
答案 0 :(得分:4)
tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >
是来自班级flux
的方法limitedSurfaceInterpolationScheme<Type>
的返回类型。这是来自类模板的常规方法,而不是方法模板。
faceFlux_*this->interpolate(phi);
与faceFlux_*(this->interpolate(phi));
完全相同 - 它是乘法。
答案 1 :(得分: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
}
有关详情,请参阅How to define a template class in a .h file and implement it in a .cpp file