He definido unos tipos con typedef en la funcion es_titular y no_es_titular l compilador me dice "usuario.cpp:52:10: error: ‘((Usuario*)this)->Usuario::tarjetas’ no tiene un tipo de clase"
Código:
class Usuario{
public:
typedef std::map<Numero,Tarjeta*> Tarjetas;//estos dos son los tipos que no me reconoce
typedef std::map<Articulo*,unsigned> Articulos;
class Id_duplicado{
public:
Id_duplicado(Cadena& id):id_(id){}
Cadena idd()const{return id_;}
private:
Cadena id_;
};
Usuario(Cadena& id,Cadena& nom,Cadena& ap,Cadena& dir,Clave& cl);
void es_titular(Tarjeta& t);
void no_es_titular(Tarjeta& t);
Cadena id()const;
Cadena nombre()const;
Cadena apellidos()const;
Cadena direccion()const;
const Tarjetas& tarjetas()const;
void compra(Articulo&,unsigned);
const Articulos& compra()const;
size_t n_articulos()const;
~Usuario();
private:
static std::set<Cadena> identificadores;
Cadena identificador_;
Cadena nombre_;
Cadena apellidos_;
Cadena direccion_;
Clave contrasena_;
Tarjetas tarjetas_;
Articulos articulos;
};
std::ostream& operator<<(std::ostream& s,const Usuario& u);
void mostrar_carro(Usuario& u);
#endif
este es el cpp,resumido solo con als funciones que omereconocen los tipos
Código:
#include "usuario.h"
#include <unistd.h>
#include <string.h>
#include <utility>
void Usuario::es_titular(Tarjeta& t){
tarjetas.insert(t.numero(),&t);
}
void Usuario::no_es_titular(Tarjeta& t){
tarjetas.erase(t.numero());
}
const Tarjetas& Usuario::tarjetas()const{
return tarjetas_;
}
const Articulos& Usuario::compra()const{
return articulos;
}