我主要是一个概念问题。在我的代码中,我有几个类(让我们调用其中一个Foo
,我在各种上下文中使用它们 - 有时是堆栈分配,有时是堆分配(通常使用智能指针)。让'考虑到这种情况:
class Bar {
public:
void beep( ???(Foo) fooObject, int howManyTimes);
};
现在,每当我编写像蜂鸣声这样的函数时,我必须决定是否应该接收const Foo &
,std::shared_ptr<Foo>
,std::unique_ptr<Foo>
等等 - 而且,在很多情况下,我需要相同的为多个案例实施的逻辑。
我看到了一些可能的解决方案,但没有一个完全令人满意:
shared_ptr
- 在堆栈分配更合适的情况下执行和样板代码更慢,beep
变体 - IDE支持它非常糟糕,beep
的变种 - 我想留下干,谢谢,some_smart_ptr::get
- 可能是最好的解决方案,只要我不需要共享所有权,转让所有权和线程。我真正想要的是最后一个选项的变体(具有相似复杂性的变体),适用于更多情况。