Boost logo

Boost Users :

From: Martin Waller (martinej.waller_at_[hidden])
Date: 2006-11-19 12:47:55


(g++ 3.3.5, boost 1.32)

I have a program as follows:

Header:

//multiple include guard omitted for clarity

#include <boots/shared_ptr>

class someOtherClass;

class MyClass
{

public:
     MyClass();
     void init();
.
.
.
     private:
         boost::shared_ptr <someOtherClass> spOther;
.
.
.
};

Implementation #1:
#include <MyClass.hpp>
#include <someOtherClass.hpp>

MyClass::MyClass()
{
     init();
}

void MyClass::init()
{
     spOther(new someOtherClass(this));
}

Implementation #2:
#include <MyClass.hpp>
#include <someOtherClass.hpp>

MyClass::MyClass():spOther(new someOtherClass(this))
{
}

Question:

Why does implementation #2 fail to compile with the error:

error: no match for call to
'(boost::shared_ptr<someOtherClass>)(someOtherClass*)' ?

yet implementation #2 compiles fine?

Please help me understand what going on here...is it possible to get
implementation #2 to compile or is it 'bad code'?

Thanks


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