Tengo esta clase
#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
#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()
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()<<",";
}
}