Pour autant que je sache, le constructeur de copie par défaut C++ se comporte uniquement comme prévu lorsque la classe est une classe POD.Désactivation du constructeur par défaut pour les classes non-POD
Je voudrais savoir s'il existe une solution pour empêcher le programmeur d'écrire du code qui utilise (implicitement ou non) le constructeur de copie par défaut si l'objet n'est pas POD.
Je sais que vous pouvez toujours rendre votre copie et votre affectation privées pour résoudre ce problème, mais j'aimerais savoir s'il existe une solution automatisée. Par exemple le compilateur pourrait générer un avertissement dans le cas où votre code génère un appel de constructeur de copie par défaut et votre classe n'est pas POD?
Le but ici est de détecter les cas où j'ai oublié de déclarer la copie/affectation privée ou de les définir manuellement.
Aussi, vous savez si cppcheck peut faire ça?
"Le constructeur de copie par défaut C++ se comporte uniquement comme prévu lorsque la classe est une classe POD." -- C'est faux. Tant que tous ses membres copient correctement, le constructeur de copie par défaut devrait fonctionner correctement. Par exemple, si ma classe a un vecteur, cela copiera bien avec le constructeur de copie par défaut, car il appellera le constructeur de copie de vecteur, qui à son tour appellera le constructeur de copie de chacune de ses chaînes. –
Bon point. Ensuite, il n'y a probablement pas de solution simple à ce problème.Le compilateur devrait passer par tous les graphes d'héritage/composition pour voir si tous les membres ont des constructeurs de copie définis, soit POD, je devine:/ – Dinaiz