从OpenFOAM中相同类的另一个属性初始化引用的属性

时间:2019-05-10 14:20:33

标签: c++ reference openfoam

我正在研究C ++框架OpenFOAM,尤其是在用于项目的库上。我无法按自己的方式声明类的构造函数。从C ++的角度来看,我认为我的问题很有趣。

这是我的构造函数(在arbMesh.C中):

    explicit arbMesh(volScalarField& Rho)
    :
    rho_(Rho),
    mesh_(Rho.mesh())
    {}

“ Rho”是volScalarField引用,“ mesh_”是const fvMesh引用。

我要做的是添加另一个从“ fvMesh”对象定义的“ pointMesh”类型的属性。我的直接想法是将属性“ const pointMesh&pMesh”属性添加到arbMesh类,然后将以上内容更改为:

    explicit arbMesh(volScalarField& Rho)
    :
    rho_(Rho),
    mesh_(Rho.mesh()),
    pMesh_(pointMesh::New(Rho.mesh()))
    {}

    explicit arbMesh(volScalarField& Rho)
    :
    rho_(Rho),
    mesh_(Rho.mesh()),
    pMesh_(pointMesh::New(mesh_))
    {}

    explicit arbMesh(volScalarField& Rho)
    :
    rho_(Rho),
    mesh_(Rho.mesh()),
    pMesh_(const fvMesh& mesh_)
    {}

显然,这些解决方案都不起作用,但我想我已经接近了。问题是初始化未正确完成。确实,我记得那些是引用,它们必须像这样声明:

    class arbMesh
    {
      volScalarField& rho_;
      const fvMesh& mesh_;
      const pointMesh& pMesh_;
      ...

这是第三个选项的编译错误:

    arbMesh.H.:97:11: error: expected primary-expression before 'const'
    pMesh_(const fvMesh mesh_)

我如何声明pMesh以便正确初始化它?

如果您不熟悉source code of OpenFOAM的类别,请浏览它。 我无法在c ++论坛或OF社区中找到合适的答案。

0 个答案:

没有答案