Boost logo

Boost Users :

From: Eoin (eoin-keyword-boostusers.07781a-dated-1146356872.b08414_at_[hidden])
Date: 2006-04-24 20:27:50


Hello, I've a question, I don't know if I'm doing something technically
wrong or if my whole approach is totally wrong. To explain I have a
class (foo) managed by a shared_ptr and it contains a member class (bar)
with needs to access some members of foo. So I figure I need some sort
of pointer in the bar class back to the foo class. I thought using a
weak_ptr was the obvious choice, here is what I came up with it;

using namespace boost;

class foo;

class bar
{
public:
    bar(weak_ptr<foo> f) :
        foo_(f)
    {}
private:
    weak_ptr<foo> foo_;
};

class foo :
    public boost::enable_shared_from_this<foo>
{
public:
    foo() :
        bar_(shared_from_this())
    {}
private:
    bar bar_;
};

But I get a boost::bad_weak_ptr error. Now if I use regular pointers
instead of weak_ptr's I can get stuff working except that when I use
"bar_(this)" in the initialization list for foo MSVC 7.1 gives me a
warning, which I don't like. Is there a more appropriate method I should
be using to accomplish this.

Kind Regards,
Eoin.


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