|
|
|
|
Bonjour.
Voila mon problème :
je déclare une fonction ainsi :
void f(double&,double&,double);
maintenant, je souhaite avoir des valeur par défaut pour les deux derniers paramètres, je tape donc :
void f(double & a,double& b=1.2,double c=2.3){...}
le compilateur accepte bien le paramètre par défaut pour c, mais pas pour b. Le '&' le gène. Bien entendu, je veu pouvoir conservé le '&' car dans le cas ou il est fourni, b est modifié.
si quelqu'un à une idée pour résoudre ce problème, merci d'avance.
Salutation !
Char Snipeur
Je ne pense pas que tu puisse passer comme cela une valeur par défaut dans ton entete de fonction, si tu veux la récupérer ensuite.
void f(double & a,double& b,double c=2.3){
b = 1.2; // --- Default start value
}
~ iclic @ gauch,iclic, iclic @ droate, iclic, iclic et ya pas de bôg môsieu ! ~ |
Merci.
|
Ben oui coco mais tu ne peux mettre des valeurs par défaut que pour les paramètres en fin de prototypes ! Or la ton char * n'a pas de valeur par défaut.
(mando@cobo) (~) $ cat plop.cpp
#include <iostream>
void f(const float & x,const float & y=6.9,const float & z=2.8){
std::cout << x << ' ' << y << ' ' << z << ' ' << std::endl;
}
int main(){
f(1.2);
return 0;
}
(mando@cobo) (~) $ g++ -W -Wall plop.cpp
(mando@cobo) (~) $ ./a.out
1.2 6.9 2.8
Pour info c'est gcc 4.1.2 que j'utilise, mais je pense que ça n'a rien à voir avec la version de gcc sur ce coup Bonne chance |
Pour un pointeur nul utilise plutot la constante NULL.
#include <iostream>
int f(const double & x,const double & y = 0,const char * z = NULL){
std::cout << x << ' ' << y << ' ' << z << std::endl;
std::cout << std::endl;
}
void traite (char** a,const double & b,const double & c,const double &l=1.2,char* u=NULL){
std::cout << "*a=" << *a << std::endl;
std::cout << "b=" << b << std::endl;
std::cout << "c=" << c << std::endl;
std::cout << "l=" << l << std::endl;
std::cout << "u=" << u << std::endl;
std::cout << std::endl;
}
int main(){
f(1,2.5,"tapir");
char * plop = "plop";
traite(&plop,2.3,4.2,4.8,"mando");
return 0;
}
A noter que envoyer NULL sur std::cout bloque l'écriture sur ce flux c'était peut être ton problème. Ca doit se régler avec un std::flush ou truc dans le genre. Bonne chance |
Je trouve que 0 est plus parlant que NULL surtout qu'il me semble bien que NULL est défini ainsi :
|
Salut.
|