Hi all,

I have a class called TextTool.  In its constructor I initialize a member variable.  This member variable needs a pointer to TextTool in its constructor.  Hence I need to have a pointer to "this" (TextTool) and then pass it to the constructor of the member variable.  This is a summery of my code:

TextTool.h
class TextTool : public Tool, public boost::enable_shared_from_this<TextTool>
{
public:
    TextTool(QDialog *taskDialogue);   
private:
    boost::shared_ptr<ToggleControl> bold; //Member variable that needs a pointer to TextTool in its constructor  
};

TextTool.cpp
TextTool::TextTool(QDialog *taskDialogue) : Tool(this->name)

    boost::shared_ptr<TextTool> pointerToThis = TextTool::shared_from_this();  //ERROR OCCURS ON THIS LINE

    bold = boost::shared_ptr<ToggleControl>(new ToggleControl(pointerToThis));
}

I get a runtime exception: "boost::bad_weak_ptr at memory location 0x0012fccc" when executing the above mentioned line.
On the BOOST online documentation, I dont understand what this line means:  "*this must be a subobject of an instance t of type T . There must exist at least one shared_ptr instance p that owns t.".  Do I need to have an instance (t) of TextTool (T) as a member variable of the class TextTool?  Won't this lead to loops in my situation (since I want the "this" pointer to be created in the constructor itself)? 

Any help?
Thanks,
/C.