Surcharge de l'opérateur new
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:
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;
}; |
Code:
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;
} |
En surchargeant l'opérateur new on est obligé d'utiliser des membres static uniquement ?
Merci