Author Topic: Acceder a miembros de objetos de un set  (Read 2563 times)

zaius

  • Full Member
  • ***
  • Posts: 133
  • Karma: 0
    • View Profile
Acceder a miembros de objetos de un set
« on: Agosto 12, 2013, 12:34:14 am »
Tengo esta clase
Code: [Select]
#ifndef AUTOR_H
#define AUTOR_H
#include "cadena.h"
class Autor{
public:
Autor(Cadena n,Cadena a,Cadena d):nombre_(n),apellidos_(a),direccion_(d){}
Cadena nombre()const{ return nombre_;}
Cadena apellidos()const{ return apellidos_; }
Cadena direccion()const{ return direccion_;}
private:
Cadena nombre_;
Cadena apellidos_;
Cadena direccion_;
};
#endif

y esta otra
Code: [Select]
#ifndef ARTICULO_H
#define ARTICULO_H
#include "fecha.h"
#include "cadena.h"
#include <iomanip>
#include <set>
#include "autor.h"
class Articulo{
public:
typedef std::set<Autor*> Autores;
Articulo(Autores aut,Cadena ref,Cadena t,Fecha f,double p);
Cadena referencia()const;
Cadena titulo()const;
Fecha f_publi()const;
double precio()const;
double& precio();
virtual void imp_esp(ostream& s)const=0;
std::set<Autor*> autores()const;
protected:
Autores autores_;
Cadena referencia_;
Cadena titulo_;
Fecha f_publi_;
double precio_;

};
ostream& operator<<(ostream& s,const Articulo& art);
ostringstream& operator<<(ostringstream& s,const Articulo& art);

ahora en el operador de inserción quiero acceder al  set de punteros a autor  ,obteniendo el apellido de los objetos autor a los que apuntan los punteros,pero me da error,me dice que el iterador no tine un miembro llamado apellidos()
Code: [Select]
ostream& operator<<(ostream& s,const Articulo& art){
    //esto esta simplificado pero lo importante es esto
     for(Articulo::Autores::const_iterator it=art.autores().begin();it!=art.autores().end();++it){
s<<it->apellidos()<<",";
}
}
« Last Edit: Agosto 12, 2013, 12:36:43 am by zaius »

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5472
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Acceder a miembros de objetos de un set
« Reply #1 on: Agosto 13, 2013, 04:18:37 pm »
Hola.

No se como funcionan los iteradores en c++, nunca los he usado, pero lo habitual es que el  iterador tenga un metodo next o similar para obtener el siguiente elemento. No es normal usar directamente el iterador como si fuera el elemento.

Se bueno.

 

ey