Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/08/2010, 18:29
ireth
 
Fecha de Ingreso: febrero-2008
Mensajes: 4
Antigüedad: 16 años, 2 meses
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;
};