我正在尝试在C++中实现优先队列。我创建了一个名为“priority_queue.h”的头文件,其中包含了我的类的定义,以及定义了一个通用类型的模板。我还有一个文件,在文件中我实现了类定义中定义的方法,名为“prioriy_queue.cpp”,并在其中包含了“priority_queue.h”。但是我的文本编辑器和编译器都报错,尽管它们的错误似乎是不同的。
我在StackOverflow和其他网站上查找了其他问题,甚至直接复制粘贴了一些据说正确的在线答案的代码,但即使这些也不能正常工作。
下面是我“priority_queue.h”头文件中的代码:
这是来自我的 'priority_queue.cpp' 文件的代码。
编译器报错并显示 "'template<class T> class pqueue' used without template parameters"。
我的文本编辑器显示错误,指出"name followed by '::' must be a class or namespace name"。
我使用戴尔XPS 13 9370,搭载i7 8550U处理器、16GB内存和256GB固态硬盘,在运行Windows 10 Home Version 1903的同时使用Microsoft Visual Studio Code Insiders作为我的文本编辑器。
我在StackOverflow和其他网站上查找了其他问题,甚至直接复制粘贴了一些据说正确的在线答案的代码,但即使这些也不能正常工作。
下面是我“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
};
这是来自我的 '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){
}
编译器报错并显示 "'template<class T> class pqueue' used without template parameters"。
我的文本编辑器显示错误,指出"name followed by '::' must be a class or namespace name"。
我使用戴尔XPS 13 9370,搭载i7 8550U处理器、16GB内存和256GB固态硬盘,在运行Windows 10 Home Version 1903的同时使用Microsoft Visual Studio Code Insiders作为我的文本编辑器。
pqueue
是一个模板,用于生成一个类,它本身不是一个类。pqueue<T>
才是一个类。 - Algirdas Preidžius.cpp
文件中可能会导致问题。详情请参见https://dev59.com/O3RB5IYBdhLWcg3w1Kr0。 - drescherjm