OVH Cloud OVH Cloud

boost:scoped_ptr

1 réponse
Avatar
Michaël Delva
Bonsoir à tous,

je voudrais réaliser quelque chose du style:

class A
{
private:
boost::scoped_ptr<B> b;
public:
A();
};

A::A()
{
//et ici créer b, mais je vois pas comment faire...

b = new B(); //évidemment marche pas...

}

je vois pas du tout comment réaliser ça, si c'est possible bien sûr...

1 réponse

Avatar
Christophe de VIENNE
Bonsoir à tous,

je voudrais réaliser quelque chose du style:

class A
{
private:
boost::scoped_ptr<B> b;
public:
A();
};

A::A()
{
//et ici créer b, mais je vois pas comment faire...

b = new B(); //évidemment marche pas...

}

je vois pas du tout comment réaliser ça, si c'est possible bien sûr...


Pour commencer, lire la doc de scoped_ptr:
http://www.boost.org/libs/smart_ptr/scoped_ptr.htm

Tu verras qu'il y a deux façons de lui fournir un pointeur :

scoped_ptr<T> t ( new T );

ou bien:

scoped_ptr<T> t;
t.reset( new T );


Ce qui donne, pour le constructeur de A :

A::A(): b(new B)
{
}

ou bien, dans certain cas si l'ordre d'instanciation te l'impose () :
A::A()
{
b.reset( new B );
}


A+

Christophe

--
Christophe de Vienne