Lo primero, intenta no usar friend, para acceder a miembros privados de otra clase usa metodos como te muestro en el siguiente codigo. No he probado si funciona como tu quieres ya que ni tengo todo el codigo funcional ni se lo que quieres hacer aunque por lo que veo parece un trabajo de listas enlazadas. Ahora compila y ya puedes seguir trabajando sobre esto para ir añadiendo lo que quieras:
En el Main.cpp:
Código PHP:
#include<iostream>
#include<conio.h>
#include "Lista_Parcial.h"
using namespace std;
int main()
{
int m;
TLista list;
cout<<"\n\t\t***Reserva tu Pasaje OAI***\n\n"<<endl;
cout<<"Menu Principal:\n\n";
cout<<"1> Reservar Ticket Vuelo\n\n";
cout<<"2> Eliminar Reserva\n\n";
cout<<"3> Imprimir Reporte Diario\n\n";
cout<<"4> Ingresar Cupos para Vuelos\n\n";
cout<<"5> Salir de la Aplicaci\xA2n\n\n";
cout<<"****Escoja una Opci\xA2n: ";
cin>>m;
switch(m)
{
case 1:
//Los valores que meto en Insertar son de prueba
list.Insertar(1,"prueba",1);
break;
case 2:
list.eliminar();
break;
case 3:
list.printreporte();
break;
case 4:
list.cupos();
break;
case 5:
cout<<"\n\nExit"<<endl;
break;
default:
cout<<"La Opci\xA2n no esta en el menu"<<endl;
}
cin.ignore();
return 0;
}
En el Lista_Parcial.h:
Código PHP:
//---------------------------------------------------------------------------
#ifndef LISTAPARCIAL_H_INCLUDED
#define LISTAPARCIAL_H_INCLUDED
#include "Nodo.h"
//---------------------------------------------------------------------------
class TLista {
public:
TLista();
~TLista();
void Insertar(int v, string N,int C);
void eliminar();
bool ListaVacia();
void cupos();
void printreporte();
private:
pnodo primero;
pnodo actual;
};
#endif // LISTAPARCIAL_H_INCLUDED
En Lista_Parcial.cpp:
Código PHP:
#include "Lista_Parcial.h"
//---------------------------------------------------------------------------
TLista::TLista()
{
primero = actual = NULL;
}
//---------------------------------------------------------------------------
TLista::~TLista()
{
pnodo aux;
while(primero) {
aux = primero;
primero = primero->GetSiguiente() ;
delete aux;
}
actual = NULL;
}
//---------------------------------------------------------------------------
bool TLista::ListaVacia()
{
return primero == NULL;
}
//---------------------------------------------------------------------------
void TLista::Insertar(int v, string N,int C)
{
cout<<"\n\nDigite ID: ";
cin>>v;
cout<<"Ingrese Nombre: ";
cin>>N;
cout<<"Ingrese Ciudad Destino(1.Bogota - 2.Cartagena - 3.Miami - 4.Barcelona): ";
cin>>C;
pnodo anterior;
if(ListaVacia() || primero->GetID() > v) {
primero = new TNodo(v,N,C, primero);
}else {
anterior = primero;
while(anterior->GetSiguiente() && anterior->GetSiguiente()->GetID() <= v)
anterior = anterior->GetSiguiente();
anterior->SetSiguiente(v,N,C,anterior->GetSiguiente());
}
}
//---------------------------------------------------------------------------
void TLista::eliminar()
{
cout<<"\n\n SALIDA ";
}
//---------------------------------------------------------------------------
void TLista::cupos()
{
int Cbogota=20;
int Ccartagena=30;
int Cmiami=10;
int Cbarcelona=8;
cout<<"\n\n SALIDA ";
}
//---------------------------------------------------------------------------
void TLista::printreporte()
{
}
En Nodo.h:
Código PHP:
#ifndef NodoH
#define NodoH
#include <iostream>
using namespace std;
class TNodo;
typedef TNodo *pnodo;
class TNodo {
public:
TNodo(int v,string N,int C, TNodo *sig);
TNodo* GetSiguiente();
TNodo* TNodo::SetSiguiente(int v, string N, int C, TNodo* nodo);
int GetID();
private:
int ID;
string nombre;
int ciudad;
pnodo siguiente;
};
#endif
En Nodo.cpp:
Código PHP:
#include "Nodo.h"
TNodo::TNodo(int v,string N,int C, TNodo *sig)
{
sig=NULL;
ciudad = C;
ID = v;
nombre = N;
siguiente = sig;
}
//---------------------------------------------------------------------------
TNodo* TNodo::GetSiguiente()
{
return siguiente;
}
int TNodo::GetID()
{
return ID;
}
TNodo* TNodo::SetSiguiente(int v, string N, int C, TNodo* sig)
{
TNodo* retval;
try
{
retval = new TNodo(v,N,C, sig->siguiente);
}catch(bad_alloc){
retval=NULL;
}
return retval;
}
Por facilitar el trabajo, te aconsejo que cada clase la coloques en un archivo independiente para poder luego trabajar mas facilmente con cada una. Espero haber sido de utilidad y perdona por los fallos que pueda tener.