Salut à tous,
je veux utiliser un std::vector pour créer un tableau 2D de manière dynamique en passant en paramètre la taille du tableau au constructeur.
voici ma classe:
dans le main j'instancie une element de la classe test. la compilation fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include <vector> class test{ public: std::vector< std::vector<int> > Tab_2D; public: test(int size_tab){ Tab_2D.resize(size_tab,std::vector<int>(size_tab,0)); } };
----------------
----------
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <vector> #include "test.h" #include <stdio.h> int main (int ac, char *av[]) { int taille=2; test Tab1(taille); while(1){}; return 0; }
mais dès que j'ajoute la boucle d'affichage propore aux std::vector, ben j'ai l'erreur suivante.
(code d'affichage)
-----
-----
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 for(unsigned int i(0);i<Tab1.size();++i){ for(unsigned int j(0);j<Tab1[i].size();++j) { printf("%d\n",Tab1[i][j]); } }
voici l'erreur:
------------
error C2676: binary '[' : 'test' does not define this operator or a conversion to a type acceptable to the predefined operator
------------
(j'utilises Visual Studio C++)
J'imagines que l'erreur vient du fait que le "." soit généralement utilisé pour accéder aux membres de la classe. une surcharge d'opérateur serait la solution? mais je ne vois pas trop comment faire...
le problème pourrait être résolu en utilisant une boucle normale pour afficher (une double boucle for avec un printf Tab1[i][j] avec une surchage de l'opérateur [] mais je serai limitée car je ne pourrai pas utiliser toutes les fontions membres des std::vector.
comment dopis-je faire?
Merci d'avance.
Partager