Bonjours, je me lance enfin en C++ (Oui, c'est moi, le seul mec qui fait du Pascal ! )
Et du coup, je cherche à adapter certain de mes projets Delphi en C++, mais il parait que sur ce langage, les variables globales c'est cancer
D'où ma question, est-ce vraiment le cas, et si oui, comment faire pour par exemple, réutiliser une variable ou un tableau dans une fonction, par exemple:
->J'ai un tableau de 50 boolean nommé bool_slot[0..49].
->Je lance une fonction du genre classe.ID== fonction();
->ma fonction passe les boolean en ordre jusqu'à trouver le premier false disponible, puis sort de la chaine et me donne le # de la case 'libre'
Et du coup, je dois conserver le tableau à un endroit où il ne s'effacera pas, et en même temps, l'utiliser dans ma fonction, mais comment? ?
Merci d'avance
Tu le passes en parametre et en type de retour ?
tabeauTrié=trier(tableau);
Le 02 juillet 2015 à 20:34:39 Darkandgel a écrit :
Tu le passes en parametre et en type de retour ?tabeauTrié=trier(tableau);
Mais je veux seulement avoir le # de la case qui a été changée (soit la première case 'false' trouvée)
J'ai trouvé un truc parlant de pointeur en recherchant, par contre, est-ce ce que je cherche?
Oui les pointeur peuvent te permettre de faire ca. Essentiellement tu passes a ta fonction un pointeur ou la fonction va ecrire l'information que tu as besoin de recuperer.
Les variables globales sont tout aussi mal en C++ qu'en Pascal. Mais si ton programme fonctionne, pourquoi pas.
Le 02 juillet 2015 à 19:42:27 BlackChinchilla a écrit :
Bonjours, je me lance enfin en C++ (Oui, c'est moi, le seul mec qui fait du Pascal ! )Et du coup, je cherche à adapter certain de mes projets Delphi en C++, mais il parait que sur ce langage, les variables globales c'est cancer
D'où ma question, est-ce vraiment le cas, et si oui, comment faire pour par exemple, réutiliser une variable ou un tableau dans une fonction, par exemple:
->J'ai un tableau de 50 boolean nommé bool_slot[0..49].
->Je lance une fonction du genre classe.ID== fonction();
->ma fonction passe les boolean en ordre jusqu'à trouver le premier false disponible, puis sort de la chaine et me donne le # de la case 'libre'Et du coup, je dois conserver le tableau à un endroit où il ne s'effacera pas, et en même temps, l'utiliser dans ma fonction, mais comment? ?
Merci d'avance
Effectivement, les variables gobales, c'est cancer.
Tu complexifies énormément la lecture du code en ne spécifiant pas réellement de dépendance à ta variable.
Sinon, je vois deux solutions à ton problème.
Personnellement, j'aurais fais un wrapper sous forme d'interface (+ implémentation), et j'aurais envoyé un pointeur sur l'interface à chaque classe qui a besoin de manipuler ton tableau.
La deuxième solution que je vois, que je suis personnellement moins fan, c'est de faire un singleton qui retourne ton tableau, je suis moins fan car au fond, ça fait le même fonctionnement qu'une variable globale, mais ça oblige le développeur derrière à avoir une dépendance qui serait le classe singleton.
(bon, j'ai pas lu le reste des messages avant d'écrire ce message, mais les solutions que j'ai cité sont proches du domaine de l'orienté objet en général ainsi que la méthodologie du C++)
Ah, par contre, les pointeurs, je te déconseille de les utiliser en C++, non pas car c'est "mauvais", mais il y a des outils plus adaptés, regardent du côté des références.
Euh, Juste pour information un tableau en c++ c'est en fait un pointeur déjà
int tableau[] équivaux a int * tableau, c'est juste la mémoire pointé qui diffère!
Merci pour toutes les réponses, je vais passer une à une et rechercher ce que vous avez mentionnés