Boost logo

Boost Users :

Subject: [Boost-users] Problem with enable_shared_from_this and shared_ptr
From: Ryan McConnehey (mccorywork_at_[hidden])
Date: 2010-07-20 22:06:55

If class "Pool" inherits from enable_shared_from_this the documentation
says I'm able to do the following.

shared_ptr<Pool> aPool = shared_from_this();

The minimal code I've included shows that this isn't happening. The
code compiles but I get this error "tr1::bad_weak_ptr". What should I
be doing different?



//C++ Includes
#include <exception>
#include <iostream>
#include <vector>
#include <algorithm>

//Boost Includes
#include <boost/shared_ptr.hpp>
#include <boost/enable_shared_from_this.hpp>

class pool : public boost::enable_shared_from_this< pool > {
  using boost::enable_shared_from_this< pool >::shared_from_this;

  boost::shared_ptr<int> get(void) {
    boost::shared_ptr<pool> aPool = shared_from_this(); //This is
where the tr1::bad_weak_ptr happens.
    return boost::shared_ptr<int>(new int);

int main(int argc, char * argv[]) {
  try {
    pool * myPool = new pool;

    boost::shared_ptr<int> a = myPool->get();
  catch (std::exception & exception) {
    std::cout << exception.what() << std::endl;

  return 0;

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at