Bonjour,
comment puis-je faire une deep copy de ce tableau?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 class Myclass { char * name; int nb; } Myclass test=new test*[size]; ....
Bonjour,
comment puis-je faire une deep copy de ce tableau?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 }
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager