Bonjour,
je suis actuellement en train de créer des pointeurs intelligents
cependant lorsque je surcharge mon opérateur new (dans ma classe, pas globalement) je rencontre une erreur.
Le compilateur me sort des erreurs car les attributs de ma classe ne sont pas static
Voilà les parties qui ne fonctionnent pas :
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 template<typename Type> class Ptr_intelligent { public: Ptr_intelligent(); //constructeur par défaut Ptr_intelligent(Type*); // constructeur par copie Ptr_intelligent(const Ptr_intelligent<Type>&); //constructeur par copie ~Ptr_intelligent(); //destructeur void * operator new(size_t); private: Type* ptr; Compteur* cpt_ref; allocateur<Type> a; };En surchargeant l'opérateur new on est obligé d'utiliser des membres static uniquement ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 template<typename Type> void * Ptr_intelligent<Type>::operator new (size_t taille) { ptr = a.allouer(taille); return ptr; }
Merci
Partager