我正在研究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社区中找到合适的答案。