C ++为具有引用成员变量但将引用作为参数传递给基类的类创建构造函数(副本)

时间:2018-08-23 12:53:06

标签: c++ inheritance constructor reference

我有一个类ModelRecorder,其中包含对另一个类OpModel的引用modelRef _。

class ModelRecorder : public CompositionalModel //This is an abstract base        class
{

    OpModel& modelRef_;
};

创建ModelRecorder的实例时,modelRef_被初始化。没关系,那很好。

我将如何为ModelRecorder写一个构造函数(复制构造函数?),以便如果创建另一个实例,则引用成员modelRef_将被先前创建的OpModel实例初始化?

请注意,CompositionalModel是抽象基类。

在另一个类中,有一个方法返回对CompositionalModel基类的引用。我知道返回较窄的基类是一个很好的OOP。

这是方法:

mv::CompositionalModel& mv::CompilationUnit::recordedModel()
{
    return *recordedModel_;
}

我想将此对基类的引用传递给ModelRecorder的构造函数,以便引用成员modelRef_与先前创建的OpModel实例一起初始化?

我尝试了此操作,但是它给出了以下错误,因为modelRef是取消引用的类ModelRecorder的成员,而不是基类CompositionalModel的成员,这是正确的。

错误:“ const class mv :: CompositionalModel”没有名为“ modelRef _

”的成员
mv::ModelRecorder::ModelRecorder(const CompositionalModel& arg) : CompositionalModel{static_cast<const ModelRecorder&>(arg)}, modelRef_{arg.modelRef_}
{
}

0 个答案:

没有答案