我看过一些关于这个问题的帖子,但没有总结我目前情况下的所有选项,并且可能有我没有考虑过的解决方案。
我的情况很一般,我有几个类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因为那样我将返回一个抽象对象。
有什么更好的或创造性的方法来解决这个问题?:)