Manipulations des Tables - C++ - Programmation
Marsh Posté le 04-11-2007 à 01:15:13
int** Nomfonction(int Table[2][7], *autres parametres*){
...
return Table;
}
-> int Table[2][7] : zone de 2x7 entiers à l'adresse mémoire Table
si tu retourne table (l'adresse du premier entier du tableau), la signature de la fonction doit être int*
Marsh Posté le 02-11-2007 à 18:57:00
Bonjour.
Dans le cadre d'un projet scolaire, je dois creer un jeu d'Awalé en cpp
J'utilise pour ce faire une table bidimensionnelle de type int Table[2][7]
en cours de jeu, Table[i][j] renvoie à la j-éme case du (i-1)e joueur, Table[i][0] à ce qu'il a déjà collecté.
Au cours du jeu, nous utilisons diverses fonctions qui modifient la table (par exemple pour ramasser, pour distribuer, etc...)
mes definitions de ces fonctions sont donc de type:
int** Nomfonction(int Table[2][7], *autres parametres*){
...
return Table;
}
à la ligne de "return Table;" le compilateur (devcpp pour ne pas le nommer) me sort:
invalid conversion from `int (*)[7]' to `int**'
Dans le meme genre (ou presque), lorsque je dois utiliser la fonction, mon
Table=Nomfonction (Table, *autres parametres*)
rappelle:
incompatible types in assignment of `int**' to `int[2][7]'
ou
invalid conversion from `int**' to `int (*)[7]'
(selon son humeur)
j'ai essayé de ne mettre que "int" au lieu de "int**" (on sait jamais) mais sans succès...
Plus etonnant, lorsque j'essaye de finter le compilateur, en transformant ma table bidim en une table unidim (table[i][j] devenant table[i*7+j]) j'ai les memes erreurs (aux arguments pres...)
Question: existe-t'il une syntaxe correcte que j'aurais oubliée, ou bien est-ce que tout simplement, une table etant considérée comme un ensemble d'elements, une fonction ne peut pas en ressortir?
Dans le premier cas, les réponses vont se limiter à un classique "eh gamin, voilà la syntaxe correcte" ce à quoi je repondrais "merci beaucoup", tout misérable de pas m'etre rappellé ça, et dans le second, je serais plus embetté...
J'ai pensé -en cas de secours- à utiliser des pointeurs, mes fonctions se transformant alors en "void"... mais j'ai peur que ce soit assez "lourd", puisqu'au final ça fait 14 pointeurs (2*(6+1)) à gerer..
Merci d'avance pour m'aider à resoudre ce problème que je ne devrais pas avoir
---------------
~il Re~