Paramétre par defaut c++ et donnés membre
Résolu/Fermé
2149chakala
-
10 nov. 2010 à 17:48
mamiemando Messages postés 33459 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 janvier 2025 - 12 nov. 2010 à 12:47
mamiemando Messages postés 33459 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 8 janvier 2025 - 12 nov. 2010 à 12:47
A voir également:
- Paramétre par defaut c++ et donnés membre
- Netflix paramètre compte - Guide
- Membre indisponible vinted - Guide
- Remettre parametre usine pc - Guide
- Retablir parametre par defaut chromecast - Guide
- Windows 11 clic droit afficher plus d'options par défaut - Guide
3 réponses
mamiemando
Messages postés
33459
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 janvier 2025
7 813
10 nov. 2010 à 18:20
10 nov. 2010 à 18:20
Effectivement ceci ne marchera pas :
Voici une manière de s'en sortir
Bonne chance
#include <iostream> class MaClasse{ private: int membre; public: MaClasse(int membre0 = 0): membre(membre0) {} inline void maMethode(int x = this->membre){ std::cout << x << std::endl; } }; int main(){ MaClasse m; m.maMethode(); m.maMethode(5); return 0; }
Voici une manière de s'en sortir
#include <iostream> class MaClasse{ private: int membre; public: MaClasse(int membre0 = 0): membre(membre0) {} inline void maMethode(int x){ std::cout << x << std::endl; } inline void maMethode(){ maMethode(membre); } }; int main(){ MaClasse m; m.maMethode(); m.maMethode(5); return 0; }
Bonne chance
oui merci ,utiliser la surcharge j'y avait pas penser ça m'a en tous cas beaucoup aider mais je suis toujours preneur d'autre solutions.
mamiemando
Messages postés
33459
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
8 janvier 2025
7 813
12 nov. 2010 à 12:47
12 nov. 2010 à 12:47
Je doute qu'il y en ait avec une méthode, car le résultat renvoyé par une méthode ne peut être résolu à la compilation, et c'est la raison pour laquelle ton compilateur refuse cette syntaxe. Concrètement écrire :
... compile deux fonctions :
La seule manière de s'en sortir pour injecter du code comme tu voudrais le faire serait que ta fonction f soit une macro (#define f....) qui sera évaluée par le précompilateur. Beaucoup plus compliqué, moins élégant, moins pratique et assez injustifié je trouve.
void f(int x = 2){ return x; }
... compile deux fonctions :
void f(int x){ return x; } void f(){ return 2; }
La seule manière de s'en sortir pour injecter du code comme tu voudrais le faire serait que ta fonction f soit une macro (#define f....) qui sera évaluée par le précompilateur. Beaucoup plus compliqué, moins élégant, moins pratique et assez injustifié je trouve.