我正在尝试用 C++ 实现优先级队列。我创建了一个名为“priority_queue.h”的头文件,其中包含我的类的定义,以及一个定义通用类型的模板。我还有一个文件,我在名为“priority_queue.cpp”的文件中实现类定义中定义的方法,其中包含“priority_queue.h”。我的文本编辑器和编译器都在抛出错误,尽管它们看起来有所不同。
我在 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 RAM 和 256GB SSD,运行 Windows 10 家庭版 1903,我的文本编辑器是 Microsoft Visual Studio Code Insiders。
最佳答案
您必须在 header 中定义类模板的成员函数。并写
template <typename T>
void pqueue<T>::insert(T element, int priority){
}
关于c++ - 名称后跟 '::' 必须是类或命名空间错误,即使 '::' 跟在类名之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58819526/