我有一个继承自IComponent的组件类。此函数用于将组件与antoher链接。
void Component::link(IComponent &other)
{
components->setRef(std::make_shared<IComponent>(other));
}当我编译我的程序时,我有这个错误:
error: invalid new-expression of abstract class type ‘IComponent’我该如何解决这个问题呢?
PS:我知道我不能实例化一个接口,因为它包含纯虚函数,但我不知道如何避免这个问题
发布于 2021-03-08 06:31:30
很不清楚你想在这里做什么。"setRef()“听起来像是它的参数是一个引用,如果是这样的话,你不需要对(智能)指针做任何事情。您至少应该展示该方法的原型。
如上所述,如果你想“复制”“其他”,你应该通过“克隆”接口来做,例如创建虚拟的"IComponent* IComponent::clone()“方法,并在组件中正确地实现它。此外,如果保证"other“是对组件的引用,则可以强制转换和复制构造新实例(但这不太可能是您的老师希望您也这样做的)。
https://stackoverflow.com/questions/66519347
复制相似问题