#include <boost/shared_ptr.hpp>
class Stuff
{
public:
Stuff() : m_str(boost::shared_ptr<std::string>(new std::string))
{
}
~Stuff() {}
inline void setStr(const char *str) { m_str->assign(str); }
inline boost::shared_ptr<const std::string> str_ptr() const { return m_str; }
inline std::string str() const { return m_str->data(); }
private:
boost::shared_ptr<std::string> m_str;
};
int main(int argc, char **argv)
{
Stuff *obj = new Stuff;
obj->setStr("banan");
boost::shared_ptr<const std::string> str = obj->str_ptr();
delete obj;
std::cout << str->data(); // banan
return 0;
}