Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/11/2012, 11:39
fightmx
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 10 meses
Puntos: 22
Respuesta: Problema con la función de comparación en el set de STL (C++)

Hola, tu problema está en:

Código C++:
Ver original
  1. set<objeto*, bool(*)(objeto*,objeto*)> conj (fn_pt);

No puedes inicializar el objeto en la declaración, para ello tienes que hacerlo en la lista del constructor:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <set>
  3.  
  4. using namespace std;
  5.  
  6. class Objeto{
  7. private:
  8.     int id;
  9. public:
  10.  
  11.     Objeto(int id){
  12.         this->id = id;
  13.     }
  14.  
  15.     Objeto(){
  16.         id = 0;
  17.     }
  18.  
  19.     void setId(int id){
  20.         this->id = id;
  21.     }
  22.  
  23.     int getId(){
  24.         return id;
  25.     }
  26. };
  27.  
  28. bool comp(Objeto* a, Objeto* b){
  29.     return a->getId() < b->getId();
  30. }
  31. bool(*fn_pt)(Objeto*,Objeto*) = comp;
  32.  
  33. class Contenedor{
  34.  
  35.     private:
  36.  
  37.         set<Objeto*, bool(*)(Objeto*,Objeto*)> conj;
  38.  
  39.     public:
  40.  
  41.         Contenedor():conj (fn_pt){}
  42.  
  43.         void addObjeto(Objeto* o){
  44.             conj.insert(o);
  45.         }
  46.  
  47.         void mostrarObjetos(){
  48.             Objeto* aux;
  49.             set<Objeto*>::iterator it;
  50.             for(it = conj.begin(); it != conj.end(); it++){
  51.                 aux = *it;
  52.                 cout << aux->getId();
  53.             }
  54.         }
  55. };
  56.  
  57. int main(){
  58.  
  59.     cout << "Hola =)" << endl;
  60.  
  61.     return 0;
  62. }