相关疑难解决方法(0)

从函数返回一个抽象类

是否有可能从函数返回一个抽象类(类本身或引用,无关紧要)?

c++ abstract-class

27
推荐指数
3
解决办法
3万
查看次数

如何使抽象类正确返回另一个抽象类的具体实例?

我最近重新编写了一个自己的库来尝试将接口与实现分离.我在最后一个问题上遇到了一个用于返回另一个类的实例的类.

在接口定义中,我做了类似的事情

struct IFoo
{
    virtual const IBar& getBar() = 0;
}
Run Code Online (Sandbox Code Playgroud)

然后在具体的Foo getBar看起来像

const IBar& Foo::getBar()
{
    Bar ret = Bar();
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

问题是,一旦getBar完成就会删除ret,当复制构造函数试图像这样使用Bar时会导致严重崩溃

const Bar myBar = myFoo.getBar();
Run Code Online (Sandbox Code Playgroud)

我一直在阅读各种各样的东西,我知道通过引用返回是不受欢迎的,但我没有看到任何其他方式(我不想返回Bar*因为我不想手动删除返回值).

抽象类返回从另一个抽象类派生的具体类的实例的正确方法(如果存在任何方式)是什么?

注意我确实看到了这个解决方案:从函数返回一个抽象类, 但我不想让返回值静态和松散线程安全.

c++ abstract-class interface

0
推荐指数
1
解决办法
1386
查看次数

标签 统计

abstract-class ×2

c++ ×2

interface ×1