[C con Clase] Error al compilar cuando paso a una función un parametro que de clase Cola definida por mi
redondo.af
redondo.af en gmail.com
Vie Abr 27 19:06:36 CEST 2012
Buenas tardes a todos:
Al compilar el programa que a continuación os muestro lo hace correctamente, pero cuando cambio la llamada a la función:
tratarOpcionCola(opsub) por tratarOpcionCola(opsub,Cola); (main.cpp)
void tratarOpcionCola(int op){ } por
void tratarOpcionCola(int op, cola vlCola){ } (procesos.cpp)
void tratarOpcionCola(int a) por
void tratarOpcionCola(int a,cola b); (procesos.h)
al compilar aparecen los siguientes errores:
\procesos.h `cola' has not been declared
\main.cpp In function `int main(int, char**)'cannot convert `cola' to
`int' for argument `2' to `void tratarOpcionCola(int, int)'
*******************************************************************************
PROGRAMA
*******************************************************************************
*********main.cpp****************
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
#include "procesos.h"
#include "clsCola.h"
int main(int argc, char *argv[])
{
int op, opsub;
cola Cola;
do
{
op = mostrarMenuMain();
switch (op) //hace casting automatico a int p
{
case 0:
printf ("\n\t > ¡Adios!\n");
break;
case 1: // practica1 = Cola
do{
opsub = mostrarMenuCola();
tratarOpcionCola(opsub);
// tratarOpcionCola(opsub,Cola);
}while(opsub!=0);
break;
case 2: // practica 2
printf ("\n\t > practica2\n");
break;
case 3: // practica 3
printf ("\n\t > practica3\n");
break;
}
}while(op!= 0);
system("PAUSE");
return EXIT_SUCCESS;
}
*********************clsCola.h*******************************
class nodo {
public:
nodo(int v, nodo *sig = NULL)
{
valor = v;
siguiente = sig;
}
private:
int valor;
nodo *siguiente;
friend class cola;
};
typedef nodo *pnodo;
class cola {
public:
cola(); // : primero(NULL), ultimo(NULL) {}
~cola();
bool esVacia();
void Anadir(int p);
private:
pnodo primero, ultimo;
int total;
};
typedef cola *pCola;
***************procesos.cpp************************************
#include <string>
using std::string;
#include <iostream>
using std::cin;
using std::cout;
#include "procesos.h"
#include "clsCola.h"
int mostrarMenuMain (){
int op;
system("cls");
printf("\n Prácticas de Estructura de datos 2011/2012 ");
printf("\n ------------------------------------------------");
printf("\n 1. Práctica 1: Colas");
printf("\n 2. Práctica 2: Listas");
printf("\n 3. Práctica 3: Árboles");
printf("\n ");
printf("\n 0. Salir");
printf("\n\n Opción: ");
cin >> op;
return op;
}
int mostrarMenuCola(){
int op;
system("cls");
printf("\n Gestión de Colas de Pedidos" );
printf("\n -----------------------------------------");
printf("\n ");
printf("\n 1. Añadir un pedido a cola");
printf("\n 2. Servir el primer pedido de la cola");
printf("\n 3. Consultar el primer pedido en cola");
printf("\n 4. Determinar si hay pedidos pendientes en cola");
printf("\n ");
printf("\n 0. Salir");
printf("\n\n Opcion: ");
cin >> op;
return op;
}
void tratarOpcionCola(int op){ //falta cola de tipo cola
//void tratarOpcionCola(int op, cola vlCola){ //falta cola de tipo cola
switch (op) //hace casting automatico a int p
{
/* case 0:
printf ("\n\t > ¡Vuelves al menú principal!\n");
system("PAUSE");
break;
case 1: // practica1 = Cola
// añadirPedido();
break;
case 2: // practica 2
printf ("\n\t > practica2\n");
break;
case 3: // practica 3
printf ("\n\t > practica3\n");
break; */
}
}
************************procesos.h***************
int mostrarMenuMain();
int mostrarMenuCola();
//void tratarOpcionCola(int a,cola b);
void tratarOpcionCola(int a);
********************clsCola.cpp*****************
#include <cstdlib>
#include <iostream>
using namespace std;
#include "clsCola.h"
cola::cola() { primero=NULL; ultimo=NULL;}
cola::~cola(){}
bool cola::esVacia()
{
return (primero==NULL && ultimo==NULL);
}
void cola::Anadir(int ped)
{
pnodo nuevo;
nuevo = new nodo(ped);
if(esVacia()) //si esta vacia se asigna a la cabecera
{
primero=nuevo;
ultimo=nuevo;
}
else
{
}
}
Más información sobre la lista de distribución Cconclase