各位朋友们好!
我最近在看lagrangian库中的solidParticle库代码,对于里面的 类模板的使用 不太懂,solidParticleCloud.C部分代码如下:
void Foam::solidParticleCloud::move(const dimensionedVector& g) //在solidParticleCloud类中定义一个move函数
{
const volScalarField& rho = mesh_.lookupObject<const volScalarField>("rho");
const volVectorField& U = mesh_.lookupObject<const volVectorField>("U");
const volScalarField& nu = mesh_.lookupObject<const volScalarField>("nu");
interpolationCellPoint<scalar> rhoInterp(rho);
interpolationCellPoint<vector> UInterp(U);
interpolationCellPoint<scalar> nuInterp(nu);
solidParticle::trackingData
td(*this, rhoInterp, UInterp, nuInterp, g.value()); //在solidParticleCloud类下面定义了一个trackingData类的对象td??
Cloud<solidParticle>::move(td, mesh_.time().deltaTValue());
}
代码中的这句话:
solidParticle::trackingData
td(*this, rhoInterp, UInterp, nuInterp, g.value());
目前自己很困惑,为什么在solidParticleCloud类的函数move中可以 定义一个 solidParticle类中的 trackingData类的 对象td呢?
自己查找了solidParticleCloud.H文件发现 solidParticleCloud的基类是 Cloud<solidParticle>类,这个Cloud<solidParticle>类 中solidParticle是实参,对Cloud <ParticleType> 类模板进行了实例化.
我怀疑难道是因为Cloud<solidParticle>类中的 实参是solidParticle,所以其子类solidParticleCloud中函数 就可以调用/定义 solidParticle类中的trackingData类?
请哪位高手能够指点一下呢?感激不尽:xinxin: