C++ tableaux 2D
cristal
-
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 9813 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je suis une DEBUTANTE en C++, et je rencontre l'erreur suivante lors de la compilation d'un programme :
error: cannot convert 'int (*)[3]' to 'int**' in return
En fait, j'ai une fonction de la forme int** fonction()
A l'interieur de fait une allocation statique de et je retourne t a la fin
int** fonction()
{
int t[3][2];
....
return t;
}
Je sens bien un conflit allocation dynamique/allocation statique, mais toutes mes tentatives de debuggage sont infructueuses. J'ai meme tente un changement en vector<vector<int>*>*, mais je n'arrive pas non plus a declarer correctement ce pointeur.
Please Help,
Merci par avance!
Je suis une DEBUTANTE en C++, et je rencontre l'erreur suivante lors de la compilation d'un programme :
error: cannot convert 'int (*)[3]' to 'int**' in return
En fait, j'ai une fonction de la forme int** fonction()
A l'interieur de fait une allocation statique de et je retourne t a la fin
int** fonction()
{
int t[3][2];
....
return t;
}
Je sens bien un conflit allocation dynamique/allocation statique, mais toutes mes tentatives de debuggage sont infructueuses. J'ai meme tente un changement en vector<vector<int>*>*, mais je n'arrive pas non plus a declarer correctement ce pointeur.
Please Help,
Merci par avance!
A voir également:
- C++ tableaux 2D
- Logiciel plan 2d gratuit - Télécharger - Architecture & Déco
- Tableaux croisés dynamiques - Guide
- 34 2d 3f 3d 31 - Guide
- Fusionner deux tableaux excel - Guide
- Les tableaux word - Guide
3 réponses
Salut.
Je pense que ce que tu essai de faire est impossible.
le mieux est de déclarer t autrement. En plus, retourner un tableau statique : danger ! il risque d'être modifier alors que tu ne t'y attends pas.
En C++, le mieux est de faire une classe pour les tableaux 2D.
Sinon, déclare t autrement, en int* t[3] et ensuite alloue lui la place qu'il faut.
Les tableaux 2D ce n'est pas trop le point fort du C, et c'est le moins qu'on puisse dire.
Je pense que ce que tu essai de faire est impossible.
le mieux est de déclarer t autrement. En plus, retourner un tableau statique : danger ! il risque d'être modifier alors que tu ne t'y attends pas.
En C++, le mieux est de faire une classe pour les tableaux 2D.
Sinon, déclare t autrement, en int* t[3] et ensuite alloue lui la place qu'il faut.
Les tableaux 2D ce n'est pas trop le point fort du C, et c'est le moins qu'on puisse dire.
Salut,
Merci pour la reponse,
En essayant de le declarer par
int* t[3]= new int[2];
J'obtiens l'erreur suivante (mon 't' est en fait 'timing' dans mon programme):
error: variable-sized object 'timing' may not be initialized
Y a-t-il une autre idee que de creer une classe Tableau2D? : J'aimerais eviter d'ecrire une nieme claase (je fais un projet informatique qui n'en finit plus).
Merci.
Merci pour la reponse,
En essayant de le declarer par
int* t[3]= new int[2];
J'obtiens l'erreur suivante (mon 't' est en fait 'timing' dans mon programme):
error: variable-sized object 'timing' may not be initialized
Y a-t-il une autre idee que de creer une classe Tableau2D? : J'aimerais eviter d'ecrire une nieme claase (je fais un projet informatique qui n'en finit plus).
Merci.
il faut dire, ton truc, c'est n'importe quoi.
Il faut le faire en 3 fois ;
int *t[3];
t[0]=new int[2];
t[1]=new int[2];
t[2]=new int[2];
à ta place je ferai une structure :
struct timing{int t[3][2];}
ensuite :
si tu veux, tu peux même te simplifier la vie en créant une méthode dans ta structure :
int* timing::operator[](int i){return t[i];}
Il faut le faire en 3 fois ;
int *t[3];
t[0]=new int[2];
t[1]=new int[2];
t[2]=new int[2];
à ta place je ferai une structure :
struct timing{int t[3][2];}
ensuite :
timing fonction() { timing t; ... return t; }
si tu veux, tu peux même te simplifier la vie en créant une méthode dans ta structure :
int* timing::operator[](int i){return t[i];}