Bonjour,
comment puis-je faire une deep copy de ce tableau?
Code:
1
2
3
4
5
6
7
8 class Myclass { char * name; int nb; } Myclass test=new test*[size]; ....
Version imprimable
Bonjour,
comment puis-je faire une deep copy de ce tableau?
Code:
1
2
3
4
5
6
7
8 class Myclass { char * name; int nb; } Myclass test=new test*[size]; ....
N'utilise pas des char* mais des std::string
N'utilise pas des Myclass* mais des std::vector<MaClasse> (au passage ta syntaxe de création avec new ne veut rien dire, j'ai donc peut-être mal compris ton intention)
Et tout marchera par deep-copy sans que tu aies rien à faire de spécial.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include <string> #include <vector> class Myclass { std::string name; int nb; }; int main() { int size = 314; std::vector<Myclass> test(size); // test est un tableau de 314 éléments de type MaClasse. auto test2 = test; // deep-copy de test }
Malheureusement je n'ai pas le droit d'utiliser ces headers ;(
SInon je pense avoir trouvé la solution à mon problème avec ce constructeur:
Je copie tout avec une boucle for:Code:
1
2
3
4
5
6
7 Citizen( Citizen* rhs) : nb(rhs->nb), init(rhs->init), id(rhs->id), sign(rhs->sign), suiv(rhs->suiv == NULL ? NULL : new Citizen(*rhs->suiv)) {}
Code:
1
2
3
4
5
6
7
8
9
10 void deepcopy (const Bigclass& rhs) { rhs.num[0]=rhs.num[0]-1; Citizen** array=rhs.table; Citizen **newarray = new Citizen*[size]; for (int i = 0 ; i < 100; ++i) newarray[i] = new Citizen(array[i]); table=newarray; num[0]=1; }