POINTEUR INTELLIGENT

Signaler
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
-
Messages postés
4
Date d'inscription
jeudi 10 décembre 2009
Statut
Membre
Dernière intervention
30 mai 2012
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50928-pointeur-intelligent

Messages postés
4
Date d'inscription
jeudi 10 décembre 2009
Statut
Membre
Dernière intervention
30 mai 2012

j ai trouver une erreur je ss pas ou ?
Messages postés
6
Date d'inscription
vendredi 9 janvier 2009
Statut
Membre
Dernière intervention
16 décembre 2009

Désoler, une erreur de syntaxe de ma part:

IPointer ptrMagique(&(new int[BCP]));
IPointer ptrMagique = &(new int[BCP]);

C'est l'addresse du pointeur qui est prise comme argument et non pas le pointeur. XD
Messages postés
6
Date d'inscription
vendredi 9 janvier 2009
Statut
Membre
Dernière intervention
16 décembre 2009

J'ai aussi un petit commentaire apropos de ton pointeur intelligent. Lorsque tu crée ton objet et affectes un pointeur, serait-il pas mieux si cela se fait dans le constructeur de la classe uniquement qui prend comme argument un pointeur vers le pointeur qui pointe sur la memoire hype? Comme ça, tu nullifie le pointeur antécédent, et en même temps tu t'assures que ton pointeur intélligent ne peut être changé par d'autres fonctions de la classe (sauf une fonction Release(); qui libère la mémoire heap prise et rend m_Ptrs = NULL;) ce qui rendra ton code plus sur. Ex:

IPointer::IPointer(T **ppT)
{
m_Ptrs = *pT;
*pT = 0;
}
IPointer::IPointer(const T **ppT)
{
m_Ptrs = *pT;
}

Le deuxième constructeur sera dans le cas du:

IPointer ptrMagique(new int[BCP]);
ou sont equivalent puisque le constructeur n'est pas déclaré "explicit"
IPointer ptrMagique = new int[BCP];

Tu vois c'est avant tout savoir l'utilisation du pointeur avant de créer la classe mais puisque c'est un util d'apprentissage je te comprends fort bien. Moi pour apprendre les templates j'ai créer mon propre array dynamique (mieux connu sous le nom dans STL de std::vector) :D.
Messages postés
10
Date d'inscription
vendredi 14 août 2009
Statut
Membre
Dernière intervention
31 mai 2010

Essayer d'implémenter un pointeur intelligent (de mauvaise facture) je ne dis pas non, mais pour une "vraie" utilisation utilise des trucs qui ont déjà fait leur preuves.
Par exemple boost.shared_ptr, boost.scoped_ptr, etc ...
Afficher les 8 commentaires