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
#include <iostream> #include <queue> using namespace std; class Integer { private: int valor; public: Integer(int integer) { valor = integer; } int getValor() { return valor; } }; bool operator<(const Integer &entero1, const Integer &entero2) { return entero1.getValor()<entero2.getValor(); } int main(void) { priority_queue<int> colaEnteros; priority_queue<Integer> colaIntegers; colaEnteros.push(20); colaEnteros.push(12); colaEnteros.push(24); Integer a(20); Integer b(12); Integer c(24); colaIntegers.push(a); colaIntegers.push(b); colaIntegers.push(c); cout << "Cola de enteros:" << endl; while (!colaEnteros.empty()) { cout << " " << colaEnteros.top(); colaEnteros.pop(); } cout << endl << endl << "Cola de integers:" << endl; while (!colaIntegers.empty()) { cout << " " << colaIntegers.top().getValor(); colaIntegers.pop(); } cout << endl; return 0; }
Estos son los errores de compilación:
Cita:
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.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
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
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.