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 :
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 :
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 ?
Partager