我面临以下情况:摘要如何处理返回对象
class Base{
virtual void Stuff() = 0;
};
class ConcreteA : public Base{
void Stuff() {};
};
class ConcreteB : public Base{
void Stuff() {};
};
class Context {
Base exec() {
ConcreteA conc_a();
return a;
}
};
当然编译器给我一个错误,因为Base
是抽象的。不过,我需要exec()
返回一个Base类型。我知道我可以使用指针或引用使编译器高兴,但由于对象ConcreteA是在exec()
中创建的,因此通过值返回是避免悬挂引用或具有未定义所有权的指针的最佳方法。
有没有办法避免使用指针或引用来处理这种情况?
不,没有办法避免引用或指针,如果你想返回“基”类型。 – 2015-03-13 17:00:51
'std :: unique_ptr'? – 2015-03-13 17:08:59