J'ai essayé de créer une classe avec un operator bool
et un operator void*
, mais le compilateur dit qu'ils sont ambigus. Existe-t-il un moyen d'expliquer au compilateur quel opérateur utiliser ou est-ce que je ne peux pas les avoir tous les deux?définir à la fois opérateur void * et opérateur bool
class A {
public:
operator void*(){
cout << "operator void* is called" << endl;
return 0;
}
operator bool(){
cout << "operator bool is called" << endl;
return true;
}
};
int main()
{
A a1, a2;
if (a1 == a2){
cout << "hello";
}
}
Êtes-vous sûr que vous avez réellement besoin à la fois? 'operator void *' fonctionne comme un opérateur 'bool' légèrement plus sûr car il y a moins de mauvaises choses que vous pouvez faire accidentellement avec un' void * '. Aussi, google pour idiotisme bool, qui minimise les abus encore plus loin (en définissant un «pointeur d'opérateur» si je ne me trompe pas). – UncleBens
En fait, c'était en référence à une réponse que j'ai fournie pour 'ifstream'. Je me demandais pourquoi l'opérateur vide * a été appelé avant l'opérateur bool, mais quand je l'ai fait c'était ambigu. – Default