[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