[mingw] - Surcharge opérateur template
Bonjour,
J'ai créé une classe template qui encapsule un pointeur avec compteur de reference :
Code:
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);
...
} |
Afin de pouvoir ecrire dans mon code :
Code:
1 2 3 4 5 6 7 8 9
| Pointer<MyClass*> pObjet(new MyClass());
if (pObjet != NULL)
{
...
}
else
{
...
} |
J'ai redefinit les opérateurs de comparaison (en tant que membres de la classe) :
Code:
1 2
| bool operator!= (T* ptr) const;
bool operator!= (T const* ptr) const; |
Avec Visual Studio, ça marche très bien.
Quand j'essaie de compiler mon programme avec mingw, j'ai les erreurs suivantes :
Code:
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] |
Du coup j'ai essayé de redefinir d'autres opérateurs de comparaison (en tant que membres de la classe) :
Code:
1 2
| bool operator!= (void* ptr) const
bool operator!= (void const* ptr) const |
Ou d'autres trucs du genre, mais ça ne passe jamais...
Vous auriez une idée de l'origine du problème ?
Merci !