Fehler C2825: '_Container': muss eine Klasse oder ein Namespace sein, gefolgt von '::'


NickLokarno

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.

Penis

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_queuedie 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;

Verwandte Artikel