我看过一些关于这个问题的帖子,但没有总结我目前情况下的所有选项,并且可能有我没有考虑过的解决方案。
我的情况很一般,我有几个类Inf1
Inf2
(更像接口)都有纯虚拟方法。
哪里Inf1
有方法
(Inf2& or Inf2* or shared_pointer) foo(/** Some info on how to build the object**/) = 0
(这是问题的一部分)。
在实现时Inf1
返回的各种Inf2
实现foo
。
实现相对较小,Inf2
所以我不介意按值返回它们,因此它们被复制构造到结果,但我不能声明foo
返回,Inf2
因为那样我将返回一个抽象对象。
有什么更好的或创造性的方法来解决这个问题?:)