Bonjour,
J'ai cr�� une classe template qui encapsule un pointeur avec compteur de reference :
Afin de pouvoir ecrire dans mon code :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11 template <class T> class Pointer { private: T* m_ptr; public: Pointer(); Pointer(T* ptr); ... }
J'ai redefinit les op�rateurs de comparaison (en tant que membres de la classe) :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9 Pointer<MyClass*> pObjet(new MyClass()); if (pObjet != NULL) { ... } else { ... }
Avec Visual Studio, �a marche tr�s bien.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 bool operator!= (T* ptr) const; bool operator!= (T const* ptr) const;
Quand j'essaie de compiler mon programme avec mingw, j'ai les erreurs suivantes :
Du coup j'ai essay� de redefinir d'autres op�rateurs de comparaison (en tant que membres de la classe) :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 error: ambiguous overload for 'operator!=' in 'pObjet != 0' note: candidates are: operator!=(const MyClass*, const MyClass*) <built-in> note: operator!=(MyClass*, MyClass*) <built-in> note: bool Pointer<T>::operator!=(T*) const [with T = MyClass] note: bool Pointer<T>::operator!=(const T*) const [with T = MyClass]
Ou d'autres trucs du genre, mais �a ne passe jamais...
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 bool operator!= (void* ptr) const bool operator!= (void const* ptr) const
Vous auriez une id�e de l'origine du probl�me ?
Merci !
Partager