Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Desactivar el constructor de copia

Estas en el tema de Desactivar el constructor de copia en el foro de C/C++ en Foros del Web. Buenas!! A ver si alguien me puede ayudar. Para la universidad tengo que realizar un trabajo y tengo que crear una clase usuario en la ...
  #1 (permalink)  
Antiguo 20/08/2010, 18:29
 
Fecha de Ingreso: febrero-2008
Mensajes: 4
Antigüedad: 16 años, 1 mes
Puntos: 0
Desactivar el constructor de copia

Buenas!!

A ver si alguien me puede ayudar. Para la universidad tengo que realizar un trabajo y tengo que crear una clase usuario en la cual no se pueden construir objetos a parti de otro objeto ni se pueden asignar un objeto a otro. He leido que declarandolo en la parte privada de la clase sin definirlo valdria pero me sigue dando el error de que el compilador no sabe que constructor utilizar si el predeterminado o el de copia.

Este es el usuario.h:

class Usuario{
public:
typedef std::map<Numero, Tarjeta *> Tarjetas;
typedef std::map<Articulo *, unsigned> Articulos;

//Constructor predeterminado
Usuario(const Cadena&, const Cadena&, const Cadena&, const Cadena&, Clave&) throw(Usuario::Id_duplicado);
//Destructor
~Usuario();
void es_titular_de(Tarjeta&);
void no_es_titular_de(Tarjeta&);
inline Cadena id() const;
Cadena nombre() const;
Cadena apellidos() const;
inline Cadena direccion() const;
const Tarjeta& tarjetas() const;//coleccion de tarjetas
void compra(Articulo& articulo, unsigned cant = 1);
const Articulos& compra() const;
size_t n_articulos() const;

friend ostream& operator <<(ostream&, const Usuario&);

private:
//para desactivar la constucion por copia
Usuario(const Usuario&);
//para desactivar la asignacion
Usuario& operator =(const Usuario&);


Cadena identificador_;
Cadena nombre_;
Cadena apellidos_;
Cadena direccion_;
Clave& pass_;
Tarjetas tarjetas_;
Articulos articulos;
typedef std::set<Cadena>Identificadores;
static Identificadores ids;
};
  #2 (permalink)  
Antiguo 20/08/2010, 20:34
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 1 mes
Puntos: 22
Respuesta: Desactivar el constructor de copia

En realidad hace falta que declares un constructor predeterminado, en tu caso el constructor no es predeterminado ya que no utilizas parámetros con valores predeterminados, por lo que deberás de crear uno ó modificar el que tienes.

Saludos.

Etiquetas: constructor, copia, desactivar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:34.