Comment vérifier la présence d'une méthode dans une classe template en C++ ?
Bonjour à tous. J'écris une bibliothèque pour travailler avec des formes géométriques en C++ et j'ai rencontré un problème. J'ai une classe wrapper template qui doit fonctionner avec différents types de formes : cercle, carré, triangle, etc. Certaines de ces formes ont une méthode `getArea()` qui retourne la surface, et d'autres non (par exemple, une forme peut être simplement un ensemble de points).
J'ai besoin d'écrire une fonction template qui :
1. Si la classe a une méthode `getArea()` — l'appelle et retourne la surface.
2. Si la méthode n'existe pas — retourne 0.0 ou une valeur par défaut.
Voici un exemple de ce que j'essaie de faire :
```cpp
template
double calculateArea(const T& shape) {
// Comment vérifier ici si T a une méthode getArea() ?
if (/* condition de vérification */) {
return shape.getArea();
} else {
return 0.0;
}
}
```
J'ai essayé d'utiliser `std::is_same` et `decltype`, mais rien ne fonctionne. D'après ce que je comprends, cela est lié à SFINAE (Substitution Failure Is Not An Error).
No answers yet.
Connectez-vous pour laisser une réponse
Blogs
Travailler avec le système de fichiers en TypeScript : guide complet
Expressions régulières en Java avec exemples : guide complet
Comment supprimer le dernier caractère d'une chaîne JavaScript ? Les 5 meilleures méthodes
Modèles architecturaux Java : du chaos au code propre