我不得不处理充满内存泄漏的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是抽象的,无法实例化。 如何在没有指针的情况下返回派生类对象(在返回动态分配的对象之前)/智能指针或任何变通方法?
答案 0 :(得分:0)
您无法按值返回abstract_base
- 返回引用或指针(很可能是std::unique_ptr<abstract_base>
或std::shared_ptr<abstract_base>
,因为您正在尝试修复内存处理)。