OpenFOAM中有关类模板使用的一些疑问



  • 各位朋友们好!

    我最近在看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:


Log in to reply
 


CFD中文网 | 东岳流体学术 | 东岳流体商业 | 吉ICP备20003622号-1