2011-02-23 16 views
6

Estoy tratando de implementar una cola de prioridad de Node*, donde el nodo es una clase que yo mismo he definido. Me di cuenta de que tener una fila de punteros prioritarios significaría que se ordenaría en función de la dirección, en lugar del valor que tenía el Nodo, y entonces busqué en varios foros de discusión para encontrar una solución que me permitiera especificar cómo para ordenar los objetos del nodo en la cola de prioridad; la mayoría está de acuerdo en que necesita escribir una estructura que contenga una función que tome como argumentos 2 objetos de nodo y devuelva la comparación deseada. La siguiente es mi clase de nodo (abreviado) y la estructura que escribí para comparar 2 objetos Node, que están en el mismo archivo de cabecera:cola de prioridad STL de C++ de los indicadores de nodo

class Node { 

public: 

    ... 

    int fValue() const { cerr << fValue() << endl; return c + h; }; 

    ... 

private: 
    ... 
    int c; 
    int h; 

    ... 
};                        

struct CompareNode : public std::binary_function<Node*, Node*, bool>                      
{ 
    bool operator()(const Node* lhs, const Node* rhs) const 
    { 
    return lhs->fValue() < rhs->fValue(); 
    } 
} 

construyo la cola de prioridad como miembro de otra clase en una cabecera diferente archivo que incluye el archivo de encabezado que contiene las definiciones anteriores. Esta clase se abrevian como sigue:

class Astar { 

public: 

    ... 

private: 

    ... 
    priority_queue<Node*, vector<Node*>, CompareNode> frontier; 
}; 

Cuando intento compilar, obtengo este error:

astar.h: 28: error: varios tipos en una declaración marca: * [Astar .o] Error 1

donde la línea 28 de astar.h corresponde al final de la clase Astar (};).

Dado que esta es la solución provista en la mayoría de los foros, no entiendo qué está pasando aquí. ¿Alguien tiene alguna idea para mí?

Respuesta

1

La clase antes de Astar carece de la terminación;

+0

Cuanto más te adentras en la programación, siempre son las cosas más simples las que te hacen tropezar ... ¡gracias por captar eso! – Melissa

Cuestiones relacionadas