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

Merci