首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >std::make_shared一个接口?

std::make_shared一个接口?
EN

Stack Overflow用户
提问于 2021-03-08 01:27:51
回答 1查看 60关注 0票数 1

我有一个继承自IComponent的组件类。此函数用于将组件与antoher链接。

代码语言:javascript
复制
    void Component::link(IComponent &other)
    {
        components->setRef(std::make_shared<IComponent>(other));
    }

当我编译我的程序时,我有这个错误:

代码语言:javascript
复制
error: invalid new-expression of abstract class type ‘IComponent’

我该如何解决这个问题呢?

PS:我知道我不能实例化一个接口,因为它包含纯虚函数,但我不知道如何避免这个问题

EN

回答 1

Stack Overflow用户

发布于 2021-03-08 06:31:30

很不清楚你想在这里做什么。"setRef()“听起来像是它的参数是一个引用,如果是这样的话,你不需要对(智能)指针做任何事情。您至少应该展示该方法的原型。

如上所述,如果你想“复制”“其他”,你应该通过“克隆”接口来做,例如创建虚拟的"IComponent* IComponent::clone()“方法,并在组件中正确地实现它。此外,如果保证"other“是对组件的引用,则可以强制转换和复制构造新实例(但这不太可能是您的老师希望您也这样做的)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66519347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档