signification de la double etoile ** - C++ - Programmation
Marsh Posté le 11-11-2003 à 20:24:13
mauvaise sous cat
ouais t'aurais pu, mais bon, sdepend ske tu veux faire, koi, jveux dire
Marsh Posté le 11-11-2003 à 20:41:12
Et faut pas mettre de [...] dans les titres (ici "[débutant]" parce que ça cache le nom de la sous-cat dans laquelle est le topic)
Marsh Posté le 11-11-2003 à 20:41:40
chrisbk a écrit : mauvaise sous cat |
J'ai ce code
Code :
|
mais a la complile j'ai:
"main.cpp": E2451 Undefined symbol 'joueur' in function init_jeux() at line 61
le but est tout simplement de crée un tableau joueur de Tjoueur avec le nombre d'iteration de nombre_de_joueur
Marsh Posté le 11-11-2003 à 20:43:21
bleuerouge a écrit : |
Marsh Posté le 11-11-2003 à 20:56:41
Ok comme ca le compilateur le prend, mais pourqoui deux etoile ?
concretement pour comprendre, a quoi ça sert de declarer de cette facon ??
Marsh Posté le 11-11-2003 à 20:57:34
bleuerouge> C'est quoi une seule étoile ?
Marsh Posté le 11-11-2003 à 20:59:30
soit T un type C++.
Le type retourné par "new T[N]" est "un pointeur sur T", à savoir "T*".
Donc le type de retour de "new T*[N]" est "T**".
etc
Marsh Posté le 11-11-2003 à 21:01:14
bleuerouge a écrit : Ok comme ca le compilateur le prend, mais pourqoui deux etoile ? |
ça veut dire que tu déclares un pointeur sur un pointeur. Et comme un pointeur est aussi l'adresse du 1er élément d'un tableau, ça veut aussi dire que tu déclares un pointeur sur un tableau de pointeurs d'objets Etoile !
Marsh Posté le 11-11-2003 à 21:36:33
Harkonnen a écrit : |
bon ok ,mais pour l'initialisation avec new
Code :
|
Or ca passe bien a la compile ,mais a l'execution ,for me saute un iteration et a l'insertion du premeir nom j'ai un acces violation avec fermeture de l'app. ,doijent utilisez un sizeof ou autre malloc ???
Marsh Posté le 12-11-2003 à 00:19:12
niet good tout ça
scanf("%s",joueur[boucle]->nomdujoueur);
Marsh Posté le 12-11-2003 à 00:20:12
je sens la profonde incompréhension de ce qu'est un pointeur
Marsh Posté le 12-11-2003 à 00:25:44
pourtant, c'est ballot
Marsh Posté le 12-11-2003 à 09:22:01
en corrigeant de cette facon ,cela regle certains problemes:
Code :
|
mais j'ai toujours un acces violation a l'execution
Marsh Posté le 12-11-2003 à 09:23:42
SchnapsMann a écrit : niet good tout ça |
marche pas le compilo me repond alors
"main.cpp": E2316 'nomdujoueur' is not a member of 'Tjoueur' in function init_jeux() at line 69
Marsh Posté le 12-11-2003 à 09:24:43
c'est logique que ça plante, tu alloues un tableau de pointeurs...
donc dans ton scanf tu accèdes à un indice de ton tableau, donc à un pointeur. Or, seul ton tableau est alloué, pas les pointeurs contenus dedans...
Tu devrais rajouter juste après le for:
Code :
|
Marsh Posté le 12-11-2003 à 10:49:36
* est un constructeur de types unaire (en sémantique statique, car mettre une sémantique dynamique là-dessus, la recherche universitaire est encore en train d'essayer).
edit : comment ça je sors ?
Marsh Posté le 11-11-2003 à 20:21:42
Comme dans ce code ,car je ne comprend pas tres bien comment faire une alloction dyn de tableau.
Ne pourrions nous pas ecrire directement dans ConstruitEtoiles():
Etoiles=new TEtoile*[nbetoiles];
Message édité par bleuerouge le 11-11-2003 à 20:58:27