Boost logo

Boost Users :

From: Perry Smith (pedz_at_[hidden])
Date: 2006-02-15 18:45:45


Hi,

I often have to "fight" with my C++ code and I must be missing a
basic design characteristic of C++.

Suppose there is a shared_ptr that has already been created. I now
want to create an object with new and "give" it to shared_ptr to
manage. I tend to do this:

std::tr1::shared_ptr<int> dog;

int fun(void)
{
     int *temp = new int;
     dog = temp;
     // ...
}

This does not work. I've discovered two ways to achieve (I think)
what I'm looking for:

int fun(void)
{
     std::tr1::shared_ptr<int> temp(new int);
     dog = temp;
     // ...
}

or ...

int fun(void)
{
     foo *temp = new int;
     dog.reset(temp);
     // ...
}

The first has the extra overhead of creating a second shared_ptr.
The second worries me... It just seems like "reset" is not what I
would call the method to do what I want to do (but maybe it is).

Anyone care to help me out here?

Thanks,
Perry


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net