Pb std::vector dans une classe
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:
Code:
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));
}
}; |
dans le main j'instancie une element de la classe test. la compilation fonctionne.
----------------
Code:
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:
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.