C ++返回静态分配的派生类对象

时间:2015-07-21 16:29:38

标签: c++ polymorphism rtti legacy-code

我不得不处理充满内存泄漏的C ++遗留代码,而我试图修复它们而不重构所有内容,我遇到了以下问题:

abstract_base make_derived(int parameter)
{
    switch(parameter)
    {
    case 1:
    return derived1;
    break;
    case 2:
    return derived2;
    ...
    }
}


abstract_base do_something(int parameter)
{
    ...
    auto return_value = make_derived(parameter);
    ....
    return return_value;

}

abstract_base是基类,显然是 derived1,derived2,... derivedn派生自abstract_base

LLVM表示return_value是抽象的,无法实例化。 如何在没有指针的情况下返回派生类对象(在返回动态分配的对象之前)/智能指针或任何变通方法?

1 个答案:

答案 0 :(得分:0)

您无法按值返回abstract_base - 返回引用或指针(很可能是std::unique_ptr<abstract_base>std::shared_ptr<abstract_base>,因为您正在尝试修复内存处理)。