接受智能指针和引用的函数?

时间:2014-12-01 10:04:57

标签: c++ pointers reference smart-pointers

我主要是一个概念问题。在我的代码中,我有几个类(让我们调用其中一个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 - 可能是最好的解决方案,只要我不需要共享所有权,转让所有权和线程。

我真正想要的是最后一个选项的变体(具有相似复杂性的变体),适用于更多情况。

0 个答案:

没有答案