Ok. Este es tramo.h:
#ifndef TRAMO_H
#define TRAMO_H
#include <utility>
#include <string>
#include "cruce.h"
using namespace std;
class Cruce;
class Tramo{
public:
Tramo();
Tramo(string nombre,float longitud,const pair<Cruce,Cruce> &extremos);
~Tramo();
Tramo(const Tramo &t);
Tramo& operator=(const Tramo &t);
bool operator==(const Tramo &t) const;
string get_nombre()const;
float get_longitud()const;
pair<Cruce,Cruce> get_extremos()const;
void set_nombre(string nombre);
void set_longitud(float longitud);
void set_extremos(const pair<Cruce,Cruce> &extremos);
private:
string nombre;
float longitud;
pair<Cruce,Cruce> extremos;
};
#endif
Y este cruce.h:
#ifndef CRUCE_H
#define CRUCE_H
#include <utility>
#include <string>
#include <list>
#include "tramo.h"
using namespace std;
class Tramo;
class Cruce{
public:
Cruce();
Cruce(string nombre,unsigned int id,const pair<float,float> &coord, const list<Tramo> &lista);
~Cruce();
Cruce(const Cruce &c);
Cruce& operator=(const Cruce &c);
bool operator==(const Cruce &c) const;
unsigned int get_id()const;
string get_nombre()const;
pair<float,float> get_coordenadas()const;
list<Tramo> get_tramos()const;
void set_nombre(string nom);
void set_id(unsigned int id);
void set_coordenadas(const pair<float,float> &coord);
void set_tramos(const list<Tramo> &l);
private:
string nombre;
unsigned int id;
pair<float,float> coordenadas;
list<Tramo> lista;
};
#endif
A ver si te sirve. Y gracias de nuevo!!