我有一个类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_}
{
}