Problema en c++

He definido unos tipos con typedef pero al compilar em dice que no son tipos..a ver si alguien ve el fallo porque yo no lo veo :(
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
#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;
}
0 respuestas