Fehler C2825: '_Container': muss eine Klasse oder ein Namespace sein, gefolgt von '::'
Ich habe meinem Code priority_queue hinzugefügt. Wenn ich das tue, erhalte ich diesen Fehler:
Fehler C2825: '_Container': muss eine Klasse oder ein Namespace sein, gefolgt von '::'
Dies führt zu Zeile 218 der Warteschlangendatei: C: \ Programme (x86) \ Microsoft Visual Studio 10.0 \ VC \ include \ queue
#include "node.h"
typedef std::pair<Nodes*, unsigned int> PathDistPair;
struct PairComparator
{
bool operator()(PathDistPair i, PathDistPair j)
{
return i.first > j.first;
}
};
MinHeap;
typedef std::priority_queue<float, PathDistPair*, PairComparator> MinHeap;
in node.h:
class Node;
typedef std::vector<Node*> Nodes;
class Node
{
....
Dies ist genau dort oben in der Auszeichnungskategorie "am wenigsten hilfreiche Fehlermeldungen". Ich habe keine Ahnung, was ich dagegen tun soll, außer aufzugeben und meine eigene Priority_queue zu entwickeln.
Ihre Prioritätswarteschlange typedef gibt keinen Container an, in dem die Warteschlange ihre Elemente speichert.
Sie müssen Ihren PathDistPair*
Vorlagenparameter durch einen Containertyp ersetzen PathDistPair*
, der priority_queue
die zugrunde liegende Struktur enthält, die Sie verwenden möchten.
// E.g. Using a vector.
typedef std::priority_queue<float, std::vector<PathDistPair*>, PairComparator> MinHeap;