Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[C++] Cola de clases

Estas en el tema de [C++] Cola de clases en el foro de C/C++ en Foros del Web. He implementado una clase muy sencilla de enteros (Integer), y estoy haciendo 2 colas de prioridad (priority_queue), una de ellas almacena valores int, la otra ...
  #1 (permalink)  
Antiguo 26/12/2009, 08:17
 
Fecha de Ingreso: diciembre-2009
Mensajes: 1
Antigüedad: 14 años, 4 meses
Puntos: 0
[C++] Cola de clases

He implementado una clase muy sencilla de enteros (Integer), y estoy haciendo 2 colas de prioridad (priority_queue), una de ellas almacena valores int, la otra valores Integer, pero la se Integer da errores al compilar.

Se queja por los calificadores, pero llevo ya tiempo volviendome loco para arreglarlo, soy muy inexperto con las priority_queue de la STL, ¿alguien podría ayudarme?

Este es el código:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <queue>
  3.  
  4. using namespace std;
  5.  
  6. class Integer
  7. {
  8.  
  9.   private:
  10.  
  11.     int valor;
  12.  
  13.   public:
  14.  
  15.     Integer(int integer) { valor = integer; }
  16.     int getValor()       { return valor; }
  17.  
  18. };
  19.  
  20. bool operator<(const Integer &entero1, const Integer &entero2) { return entero1.getValor()<entero2.getValor(); }
  21.  
  22. int main(void)
  23. {
  24.  
  25.   priority_queue<int> colaEnteros;
  26.   priority_queue<Integer> colaIntegers;
  27.  
  28.   colaEnteros.push(20);
  29.   colaEnteros.push(12);
  30.   colaEnteros.push(24);
  31.  
  32.   Integer a(20);
  33.   Integer b(12);
  34.   Integer c(24);
  35.  
  36.   colaIntegers.push(a);
  37.   colaIntegers.push(b);
  38.   colaIntegers.push(c);
  39.  
  40.   cout << "Cola de enteros:" << endl;
  41.  
  42.   while (!colaEnteros.empty())
  43.   {
  44.  
  45.     cout << " " << colaEnteros.top();
  46.     colaEnteros.pop();
  47.  
  48.   }
  49.  
  50.   cout << endl << endl << "Cola de integers:" << endl;
  51.  
  52.   while (!colaIntegers.empty())
  53.   {
  54.  
  55.     cout << " " << colaIntegers.top().getValor();
  56.     colaIntegers.pop();
  57.  
  58.   }
  59.  
  60.   cout << endl;
  61.  
  62.   return 0;
  63.  
  64. }

Estos son los errores de compilación:

Cita:
prueba.cpp: In function ‘bool operator<(const Integer&, const Integer&)’:
prueba.cpp:20: error: pasar ‘const Integer’ como el argumento ‘this’ de ‘int Integer::getValor()’ descarta a los calificadores
prueba.cpp:20: error: pasar ‘const Integer’ como el argumento ‘this’ de ‘int Integer::getValor()’ descarta a los calificadores
prueba.cpp: In function ‘int main()’:
prueba.cpp:55: error: pasar ‘const Integer’ como el argumento ‘this’ de ‘int Integer::getValor()’ descarta a los calificadores
Solo consigo hacer colas de prioridad de tipos primitivos, pero no acabo de aprender como hacer colas contener cualquier clase y que se mantenga ordenada.

Otros datos:

Uso g++, programo sobre linux.

------------------------------------------

Nada mas por el momento, espero que alguien pueda iluminarme un poco, pues llevo tiempo peleandome con este error y por mas que busco no consigo sacar nada en limpio.

Muchas gracias por adelantado, y feliz navidad.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:51.