Der Name gefolgt von '::' muss ein Klassen- oder Namespace-Fehler sein, obwohl das '::' einem Klassennamen folgt


FatherOfGold

Ich versuche, eine Implementierung der Prioritätswarteschlange in C ++ zu erstellen. Ich habe eine Header-Datei mit dem Namen 'priority_queue.h' erstellt, die neben einer Vorlage, die einen generischen Typ definiert, die Definition meiner Klasse enthält. Ich habe auch eine Datei, in der ich meine in der Klassendefinition definierte Methode in einer Datei namens 'priority_queue.cpp' implementiere, in der ich 'priority_queue.h' einbinde. Sowohl mein Texteditor als auch mein Compiler werfen Fehler aus, obwohl sie unterschiedlich zu sein scheinen.

Ich habe andere Fragen auf StackOverflow und anderen Websites nachgeschlagen und sogar Code aus Online-Antworten kopiert, die angeblich korrekt waren und selbst die nicht funktionierten.

Hier ist der Code in meiner Header-Datei 'priority_queue.h'

#include <iostream>
#include <vector>
#include <iterator>

using namespace std;

template <typename T>

class pqueue{
    public:
        pqueue();
        void insert(T element, int priority);

    private:
        vector<T> elements(); //This vector will store our data in the correct order

};

Hier ist der Code aus meiner Datei 'priority_queue.cpp'

#include <iostream>
#include <iterator>
#include <vector>
#include "priority_queue.h"

using namespace std;

template <typename T>

void pqueue::insert(T element, int priority){

}

Der Compiler gibt einen Fehler aus und sagt 'template<class T> class pqueue' used without template parameters.

Mein Texteditor gibt mir einen Fehler, der besagt name followed by '::' must be a class or namespace name

Ich bin auf einem Dell XPS 13 9370 mit dem i7 8550U, 16 GB RAM und 256 GB SSD unter Windows 10 Home Version 1903 und mein Texteditor ist Microsoft Visual Studio Code Insiders.

Vlad aus Moskau

Sie müssen die Elementfunktion der Klassenvorlage in der Kopfzeile definieren. Und schreibe

template <typename T>
void pqueue<T>::insert(T element, int priority){

}

Verwandte Artikel