c++ - 名称后跟 '::' 必须是类或命名空间错误,即使 '::' 跟在类名之后

标签 c++ class templates mingw header-files

我正在尝试用 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/

相关文章:

c++ - 类定义应该放在全局还是局部范围内?

html - 如何在 Flask 中导入 html 模板?

使用生成器或类似的 Java 模板类?

c++ - 常量指针数组

c++ - 字符串 "companion types"

c++ - 使用 C++11 Range For 替换字符串中的所有字符

c++ - 使用 Cython 将 metis 链接到包装的 C++ 模块

javascript - JavaScript 中的静态/共享属性和方法

class - 带有行为的 Scala 案例类

javascript - iCanHaz.js - 分离模板?