best practice when returning smart pointers
What is the best practice when returning a smart pointer, for example a boost::shared_ptr? Should I by standard return the smart pointer, or the underlying raw pointer? I come from C# so I tend to always return smart pointers, because it feels right. Like this (skipping const-correctness for shorter code): class X { public: boost::shared_ptr<Y> getInternal() {return m_internal;} private: boost::shared_ptr<Y> m_internal; } However I've seen some experienced coders returning the raw pointer, and putting the raw pointers in vectors. What is the right way to do it? There is no "right" way. It