Me parece que hacer una clase no copiable me ayuda mucho con la calidad de mi código. Inicialmente, hice esto con boost :: noncopyable, pero encontré que los errores del compilador de VC++ no eran tan útiles como con los miembros privados (haciendo doble clic en el lugar equivocado en el código).C++ No se puede copiar, excepto a veces
T(T const&);
T& operator=(T const&);
De hecho, me ha alertado de bastantes casos donde las clases no se pasaron como referencia donde deberían tener. Tanto es así, que me gustaría recibir una advertencia incluso en las clases que solo necesito copiar una vez.
¿Hay una buena manera de hacerlo? Estaba pensando, por ejemplo, en dejar por encima dos métodos privados y agregar un constructor público T (T const &, bool dummy) para llamar cuando realmente quiero copiar constructo. O, alternativamente, puede hacer que los dos métodos anteriores sean públicos y, de alguna manera, activar una advertencia del compilador cuando copie la construcción, suprimiendo la advertencia donde yo quiera.
¿O tal vez hay una mejor manera en conjunto?
Me gusta esta respuesta mejor. El problema con los constructores de copias, en mi experiencia, es cuando se invocan "por accidente" en un objeto enorme. 'explicit' te obliga a pensar al invocarlos, lo cual debería ser suficiente. – Nemo
Saludos, esto se adapta perfectamente a mis necesidades. Gracias. – Cookie