我在std::vector<std::unique_ptr<MyObject>>
中维护一些对象池,并将该池中的对象传递给函数void process(...)
。我尚不清楚将这些对象之一传递给process()
函数的最佳方法。如果我已阅读了不同的答案和文章,则最好将其作为常规参考传递,如下所示:
void process(MyObject& buffer);
根据我的理解,这是可取的,因为:
process()
方法的整个生命周期中都存在,因为它是由unique_ptr的所有者(即调用方法)调用的事实process()
方法这是正确的理解还是正确的指导?这是我已阅读的参考资料: Passing const unique_ptr reference as parameter
https://www.chromium.org/developers/smart-pointer-guidelines
https://herbsutter.com/2013/06/05/gotw-91-solution-smart-pointer-parameters/
答案 0 :(得分:3)
是的,出于您的原因,这是明智的选择。