Bonjour
Je suis novice avec les pointeurs intelligents. Je les ai remarqués dans le Yes::Engine. Comme dans mon application, je voulais avoir un memory mamanger je me suis inspiré de celui de Yes::Engine. Donc j'ai débuté avec les CSmartPtr proposé dans ce projet.

Or quand j'alloue un pointeur d'une variable d'une classe, j'ai une erreur :
error C2064: term does not evaluate to a function taking 1 arguments

je suis Visual 2005.

Voici mon problème en code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class CMyFirstClass
{
CMyFirstClass(int io);
// ce que l'on veut
}
 
typedef CSmartPtr<CMyFirstClass> CMyFirstClassPtr;
 
class CMySecondClass
{
private:
CMyFirstClassPtr m_Ptr;
}
 
dans le constructeur de CMySecondClass
CMySecondClass::CMySecondClass()
{
    m_Ptr (new CMyFirstClass(1));  // erreur
}
Et Boost alors . Dans son article Laurent Gomila, préconiqe d'utiliser Boost.
Mais j'ai la même erreur avec le typedef boost::shared_ptr<CMyFirstClass> CMyFirstClassPtr;

Peut-on déclarer des variables comme pointeurs dans une classe externe sachant que ces variables pointent des classes dont les constructeurs ont des arguments ?

Ca je signale que si je fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
CMyFirstClassPtr m_Ptr (new CMyFirstClass(1));
je n'ai pas d'erreur mais ce n'est pas la même adresse que la variable CMySecondClass::m_Ptr .

Pourriez-vous m'indiquer la bonne piste s'il vous plaît ?