J'adore la smirnoff !
 Groupe : Membres
|
Salut,
j'ai un petit problème avec une de mes classes : (j'ai coupé une partie)
Code : C++1
2
3 | private:
int m_largeur, m_hauteur, m_nbLayers;
int m_map[m_largeur][m_hauteur][m_nbLayers];
|
J'ai plein d'erreurs de compilation :
Et si je fais Code : C++1 | int m_map[m_largeur][m_hauteur][m_nbLayers];
|
dans une des méthodes de la classe il n'y a pas d'erreur de compilation mais un bug de l'application à ce moment là.
Comment contourner le problème ?
Édité
le 10/05/2008 à 20:32:23
par SkyJedi
"Ta mère elle est tellement grosse qu'elle ne rentre pas dans un malloc()"
"Windows est à l'informatique ce que la tecktonick est à la musique..."
"Un vrai geek, c'est celui qui croit que dans 1km il y a 1024 mètres"
|
Apprenez à utiliser la STL !!
 Groupe : Membres
|
Pour créer un tableau de ce type, il faut que les grandeurs soient des constantes connues à la compilation. Donc pas possible dans une classe sous cette forme.
Pour une bonne solution, suis le tuto proposé dans ma signature.
|
J'adore la smirnoff !
 Groupe : Membres
|
J'ai suivi ton tuto, j'ai donc :
Code : C++1 | vector<vector<vector<int> > > map;
|
Pour ma map. Comment resize un tableau tridimensionnel? J'ai essayé ça :
Code : C++1 | map.resize(10, vector(10,vector<int>(10, 0)));
|
Mais ça ne marche pas :/ (missing template arguments)
Comment puis-je faire ?
"Ta mère elle est tellement grosse qu'elle ne rentre pas dans un malloc()"
"Windows est à l'informatique ce que la tecktonick est à la musique..."
"Un vrai geek, c'est celui qui croit que dans 1km il y a 1024 mètres"
|
Apprenez à utiliser la STL !!
 Groupe : Membres
|
Personellement, je construirais directement le tavbleau avec la bonne taille plutôt.
|
Salut à tous collègues ZérOs ! Groupe : Membres
|
tu peux garder ton système de tableau, mais tu devras l'allouer dynamiquement dans le constructeur de ta classe.
Dans la déclaration de la classe :
Code : C++1
2
3 | private:
int m_largeur, m_hauteur, m_nbLayers;
int *m_map;
|
Puis le constructeur :
Code : C++1 | m_map = new int[m_largeur * m_hauteur * m_nbLayers];
|
Le problème c'est qu'il te faudra un petit calcul supplémentaire pour accéder aux bonnes adresses du tableau, parce que tu ne peux pas créer de tableaux à trois entrées il me semble
Après je ne sais pas, c'est peut-être plus simple avec des vecteurs... A toi de voir
Bonne chance
Haha ! MSN et SMS ne nous aideront pas. La Vraie communication ne se fait qu'avec les yeux...
|
Groupe : Membres
|
je vx avoire des leçon ce ki concerne les fichiers et l'accées ver eu et mm les tableau. Merci d'avance les amis
|
The cake is a lie!
 Groupe : Membres
|
Citation : bilalisteje vx avoire des leçon ce ki concerne les fichiers et l'accées ver eu et mm les tableau. Merci d'avance les amis
m'euh...
J'ai pas vraiment compris ton langage, je crois que c'est un de ces dialecte texto. Bon enfin, si tu comprends le français : Démarre un nouveau fil de discussion et pose ta question dans un français convenable.
* MatteX se tape sur les doigts : «Fatiguant va !».
[EDIT]
Bon avec tout ça j'ai oublié que je voulais répondre au sujet en cours.
@master dwarf : L'utilisation des std::vector == tableau dynamiques sécuritaires.
@SkyJedi : Regarde des références sur la STL. Tu remarqueras qu'il y a un constructeur paramétrique qui ressemble à un resize.
Tout ce que tu as à faire c'est de l'utiliser dans la liste d'initialisation (Voir le cours sur les classes).
[/EDIT]
Édité
le 13/05/2008 à 15:59:05
par MatteX
|