Paramétre par defaut c++ et donnés membre
Résolu/Fermé
2149chakala
-
10 nov. 2010 à 17:48
mamiemando Messages postés 33333 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 31 octobre 2024 - 12 nov. 2010 à 12:47
mamiemando Messages postés 33333 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 31 octobre 2024 - 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
- Windows 11 clic droit afficher plus d'options par défaut - Guide
- Retablir parametre par defaut chromecast - Guide
- Paramètre usine pc - Guide
3 réponses
mamiemando
Messages postés
33333
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 octobre 2024
7 800
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
33333
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
31 octobre 2024
7 800
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.