Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Mélange bool / string [ Divers / Divers ] (Roro8883)

vendredi 21 septembre 2007 à 16:00:43 | Mélange bool / string

Roro8883

Bonjour à tous !

J'ai un problème dans mon code, dans une classe.
Voici les lignes posant problème :

      int put_value (bool value, string file = "");
      int put_value (string value, string file = "");

En fait le problème se pose lorsqu'on appelle la fonction put_value (string).
En effet, le "string" passé en paramètre est utilisé par le 1ère fonction en tant que booleen (= true) !
Donc la fonction appelée n'est pas la bonne.

La seule méthode que j'ai trouvé c'est de faire un cast : (string) variable, pour bien définir qu'il s'agit d'un string.
Ou alors il faut d'abord déclarer la vaiable comme suit :
    string var;
    put_value (var);

N'y aurait-il pas un moyen pour éviter la confusion ?
pour appeler obligatoirement la 2ème fonction, avant la première (comme ça si c'est un string, ça utilise cette fonction, sinon ça va voir l'autre) ?

Merci

vendredi 21 septembre 2007 à 17:19:42 | Re : Mélange bool / string

DeAtHCrAsH

C'est une blague ?
Faudrait penser à ouvrir des bouquins de C/C++ au lieu de jouer les apprentis sorciers!

Le principe de la surcharge se base sur le prototype des fonctions.
Deux fonctions peuvent avoir le même nom à condition que au moins un de leur paramètre diffère de part son type.
Ensuite c'est lors de l'appel que la distinction va se faire.
Dans ton cas si tu lui passes un bool c'est la 1ère surcharge qui sera appellée, et si tu lui passes une string, ce sera la 2ème surcharge.
En gros c'est a toi de savoir quelle est la surcharge dont tu as besoin et de lui passer les bons paramètres!

Shell

vendredi 21 septembre 2007 à 18:34:42 | Re : Mélange bool / string

Roro8883

Eh c'est bon, je pose juste une question pour progresser en C/C++, on peut pas savoir tout tout de suite !

J'ai bien compris le principe de la surchage des fonctions.
C'est pour cela que dans mon code, j'ai bien mis des paramètres différents de par leur type (bool et string) :
      int put_value (bool value, string file = "");
      int put_value (string value, string file = "");

Je comprends pas pourquoi tu t'énerves comme ça ....

Le problème (je l'ai peut-être mal exprimé), est qu'un string est parfois pris pour un bool.
J'explique :
    - Quand je tape :
                             put_value (true)
      et bien la fonction avec le BOOL est appelée (donc pas de problème)

    - Quand je tape :
                             string variable;
                             put_value (variable);
      et bien la fonction avec le STRING est appelée (donc pas de problème)

    - Seulement, lorsque je tape :
                            put_value ("Bonjour");
      et bien ça appelle la fonction BOOL et non string (donc problème)

    - Pour empêcher le problème il faut taper (par exemple) :
                            put_value ((string) "Bonjour");
      et là, c'est bien la fonction STRING qui est appelée (donc problème réglé)

Ma question était donc tout-à-fait pertinente, parce que pour moi, quand je vois "Bonjour", il s'agit d'un string, alors que pour le compilateur, il s'agit d'un bool.
Je voulais juste savoir pourquoi ?!

Et j'aimerais savoir s'il existait un moyen plus simple de faire un (string) "Bonjour", comment faire pour enlever le (string) ?

PS: Pour ton information, j'ai lu pas mal de bouquins, visiter pas mal de sites web (pour la surchage des fonctions en partie)
      J'aime bien comment les débutant sont rembarrés aussi !

vendredi 21 septembre 2007 à 18:41:08 | Re : Mélange bool / string

SAKingdom

Membre Club
Réponse acceptée !
"Bonjour" n'est pas considéré comme un string mais comme un pointeur char.

À preuve:

void test (string test)
{
    cout << (char*)test << endl;
}

int main()
{
    test("Bonjour");
    return 0;
}

On aura un message d'erreur à la compilation.

C++ (@++)


vendredi 21 septembre 2007 à 18:52:49 | Re : Mélange bool / string

Roro8883

D'accord, donc il faudra toujours mettre un (string) avant le "Bonjour" pour qu'il soit considéré comme tel ?!
(sauf si la chaine est déclarée avant comme string)

Merci pour cette réponse constructive !

vendredi 21 septembre 2007 à 18:54:13 | Re : Mélange bool / string

SAKingdom

Membre Club
Réponse acceptée !
Oui ou alors utiliser les bons vieux char * à la place de l'énorme classe string.

C++ (@++)


vendredi 21 septembre 2007 à 19:03:01 | Re : Mélange bool / string

Roro8883

Merci, ça marche parfaitement bien avec les char* !!!



Cette discussion est classé dans : problème, fonction, string, value, bool


Répondre à ce message

Sujets en rapport avec ce message

Problème avec DJGPP [ par platon179 ] Bonjour tout le monde, j'ai un gros problème avec le compilateur DJGPP. Existe-t-il une fonction qui permet de charger du code compilé en mémoire, de Problème de code en c++ (fonction itoa) [ par mimyne ] voila g le code suivant:void Resultat_Clicked(Object* pSender, EventArgs* pArgs){ int operation = 5; char* chaine[2]; if (pSender == Btnres) { { ito Problème de pointeur [ par sebastienbro ] Bonjour,G une fonction ki a comme argument un pointeur vers un struct personnalisé.J'aimerais savoir commen je peu faire pour modifier lé éléments de ICONE ET BARRE DES TACHES [ par krovomite ] Voila mon problème :Je cherche a mettre un exe dans une icone que je mettre dans la barre des taches.Le problème etant que j'arrive a creer une icone Problème avec la fonction GetOpenFileName [ par JMGR ] Donc j'initialise ma structure OPENFILENAME, mais le problème, c'est qu'après il ne me met pas le fichier que j'ai sélectionné.Ma fonction : GetOpenFi Prob grave avec Visual... [ par Nuage ] Voila, j'ai un grave problème avec le debug de Visual. Je fait un bête code source, avec une fonction pour créer un élement d'une pile, et une fonctio Problème de fonctions [ par sebastienbro ] Voilà, j'ai créé une fonction Cryptage qui renvoi un type long pr savoir si il y a une erreur ou pas.J'aimerais savoir comment faire pour que la fonct conversion double en string [ par bouba ] Bonjour, je réalise une fonction qui doit calculer le nombre de caractères d'un doubleexemple:-7.56 -> 5 caractèreExiste t'il une fonction qui fasse c utlisation de la classe string [ par borgeomi ] borgeomibonjouuuuuuur !!!!!nouveau programmeur en C ++ ( mais vieux en cobol )sous visual C++création d'une fonction qui enlève les espaces de début e Problème avec les std::string [VC++6.0] [ par D1m3x ] Je suis en train de programmer un petit programme où j'utilise les templates, c'est la première fois que j'en utilise, alors je ne connais pas encore


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.