Je veux créer un constructeur de copie pour ma classe qui dispose d'un tableau double comme membre privé \
Comment puis-je écrire Copy Constructor J'ai essayé le code suivant et il en résulte une erreur Comment puis-je faire fonctionner ce constructeur de copie? p> p>
3 Réponses :
for(int i=0;i<500;++i) *(dp+i)=c1.dp[i];
Bien que vous n'ayez pas besoin d'un comme le compilateur généré, il convient parfaitement à ce cas, il y avait un besoin que vous auriez pu utiliser memmove code> ou
std :: copie code> Pour cela.
double array[500];
double dest[500];
std::copy(begin(array), end(array), begin(dest));
::memmove(dest, array, sizeof(double)*500);
Avec toute implémentation raisonnable de la bibliothèque C ++, std :: copie code> se transformera en un appel sur
MemMove code> chaque fois que c'est approprié. Alors, stick avec
std :: copie code>. +1.
Vous avez déclaré que la variable de membre a déclaré que la variable de membre n'a donc pas besoin d'allouer sa mémoire à l'aide de nouvel opérateur, utilisez simplement le tableau directement } p> p>
"Pourquoi je ne peux pas utiliser ArrayName comme un pointeur?" Parce que deux ne sont pas équivalents
"Pourquoi je ne peux pas utiliser ArrayName comme un pointeur" - parce que les tableaux ne sont pas des pointeurs; Ils agissent simplement comme si elles sont dans des situations spécifiques (dont aucune ne s'applique à ce que vous faites).
Vous n'avez pas besoin de
neuf code>, et vous n'avez pas besoin d'un constructeur de copie. Un constructeur de copie généré du compilateur fonctionnera parfaitement bien.
Sidenote: Vous utilisez
* (dp + i) code> dans un cas et
dp [i] code> dans l'autre. Pourquoi ne pas utiliser ce dernier dans les deux cas et faire
dp [i] = c1.dp [i]; code>?