Oui mais non.
Effectivement c'est vraiment faux, mais c'est parce que, au départ, je ne voulais pas TOUT mettre dans le main. Je dois laisser des variables globales, car je ne veux pas passer certains éléments en paramètres (ou valeur).
=> Déclaratiions de la variable en dehors du main
=> Modification dans le main (a[x].truc={bla,bla,bla};)
=> Appel des fonctions etc...
ce que j'écris est moins pire ?
main :
#include <iostream>
#include <string>
#include "obj_string.h"
using namespace std;
objet biblio [4];
int proba_tot=0;
int main()
{
/*ligne 12*/ biblio[0]={"mangue","une","cette",3,1,40};
biblio[1]={"ananas","un","cet",1,1,30};
biblio[2]={"lance-roquettes","un","ce",20,2,17};
biblio[3]={"fusil à clous","un","ce",17,2,13};
.....
[quote]je ne voulais pas TOUT mettre dans le main.[/quote]
ca c'est tres bien!
[quote]car je ne veux pas passer certains éléments en paramètres [/quote]
oui mais t'y es quand même un peu obligé. Là tu fais un petit projet, tu pourrais tout déclarer dynamiquement sans jamais rendre la mémoire, ca devrait pouvoir marcher si t'as plus de 32 Ko de RAM lol.
Mais imagine que tu veuilles reprendre ton code pour l'inserer dans un autre programme avec d'autres codes qui contiennent aussi des variables globales. ca peut devenir vite galere vu que pourras acceder partout à tes variables globales même pour des actions qui n'ont aucun rapport avec le programme en cours .
En plus, tu peux avoir pris plusieurs fois le même nom pour tes variables globales... et là c'est vraiment la lutte parcequ'il faut que tu changes toutes les aparitions d'une des variables....
Tandis qu'en passant des parametres, c'est un (tout petit) peu plus long à coder mais si tu veux le réutiliser apres, pas de problemes!
Et aussi, si tu fais par exemple une fonction qui te classe un tableau (par exemple hein!), si tu déclares ton tableau en global, ta fonction ne marchera que dans ton programme. Tandis que si tu passes ton tableau en parametre, tu n'auras qu'a faire un copié/collé de ta fonction si tu veux le réutiliser dans un autre programme!
__________________________
L'élève heureux est celui qui, comme la rivère, suit son cours dans son lit.
Et n'oubliez pas :[b]Seb, c'est bien![/b]
ERREUR BBCODE SUR CE MESSAGE : - La valeur de la balise "quote" n'est pas correcte !
bon alors ok... admettons que je ne mette pas de variable globale.
Il n'y a aucun moyens que les fonctions que j'apelle prennent par défaut un tableau créé avant (ou un truc comme ça), ss pour autant mettre un argument à chaque fois? Si c'est pas possible, alors ok, je les mettrai quand même, tu m'as convaincu.
Mais que je mette tt ds le main ou pas, j'ai toujours ces foutues erreurs......
tu ne peux utiliser ce type d'initialisation qu'a la déclaration de ta structure !!
sinon faut acceder à tes membres par le point, un à un, et dans ce cas là je te conseille de faire une fonction d'initialisation (en C++, tu utiliserais un constructeur de classe, c'est beaucoup plus propre...)
et sinon non tu ne peux pas passer un parametre par defaut...aller taper qq caractères à chaque appel de tes fonctions c'est pas si terrible!
Même si ça existait je sais pas si ca serait tres malin. Imagine qu'un jour , t'as envie (ça se controle pas ces choses là, c'est pervers!) de faire gerer plusieurs tableaux de ton objet... Comment tu fais si tu appelles toutes tes fonctions automatiquement avec un seul tableau?faut en général tout refaire, et donc les quelques minutes que tu as gagné en évitant de taper le nom de ton tableau à chaque fois est largement perdu!
Quand tu programmes il faut toujours essayer de penser à laisser le code facilement ramaniable pour des améliorations futures et réutilisable pour d'autres programmes (c'est bien connus les informaticiens sont des gros fénéants!)
__________________________
L'élève heureux est celui qui, comme la rivère, suit son cours dans son lit.
Et n'oubliez pas :Seb, c'est bien!
Salut,
Alors, tu n'as le droit d'utiliser {truc,bidule,machin} pour initialiser une structure seulement à la ligne même ou tu décalares ta structure, ou ton tableau de structure.
Donc si tu le fais dans les lignes suivantes, t'es obligé de faire :
tab[1].nombre = 1;
// etc ...
Donc autant faire une fonction init() qui s'en charge oui ...
Bref, vive les constructeurs ... Comme tu travailles en C++ tu peux faire un constructeur pour ta structure...
__________________________
Be C++ Mon Blog (C++, Intelligence Artificielle, Prolog)
Merci bien !!
Si un élément essentiel est à tirer de tout ça, c'est :
- les var glogales -> kick out (sauf cas de forces ultra majeures)
- adaptabilité du code
- vraiment étudier le système de classes
Je pense que je vais tout passer en classe.
Bon je reprend tt ça, et vous remercie pour votre temps accordé !
Tu sais, en C++, les class et les structures sont casi identiques, simplement que les membres sont publics par défaut dans des structures, alors qu'ils sont privés par défaut dans des class ...
Il faut juste mettre en application la POO telle que nous l'offre le C++ ...
Donc en effet, variables globales kick out toussa, car la modularité en est réduite, puisque ton code dépendra forcément de celles là.
Adaptabilité du code => accrue si tu vires les variables globales ^^
Le système de class, dans le sens POO réelle, est ultra puissant, et facilite beaucoup la tache; à étudier, en effet