无效地使用没有参数列表的template-name Queue
invalid use of template-name Queue without an argument list
我得到一个编译错误,我不能弄清楚。上面写着:
Queue.h:18:23: error:无效使用template-name
有人能帮忙吗?
#if !defined QUEUE_SIZE
#define QUEUE_SIZE 30
#endif
using namespace std;
template <class TYPE> class Queue
{
private:
TYPE *array;
public:
Queue(Queue& other);
Queue();
~Queue();
Queue& operator=(Queue other);
TYPE pushAndPop(TYPE x);
};
template <class TYPE> Queue::Queue()
{
array=new TYPE[size];
}
template <class TYPE> Queue::~Queue()
{
delete [] array;
}
语法有点不对。你需要:
template <class TYPE> Queue<TYPE>::Queue()
{
...
}
template <TYPE>
Queue<TYPE>& operator=(Queue<TYPE> other) { ... }
尽管注意在大多数情况下你可能应该通过const引用传递(当然不是通过非const引用):
template <TYPE>
Queue<TYPE>& operator=(const Queue<TYPE>& other) { ... }
或者,您可以内联实现:
template <class TYPE> class Queue
{
private:
TYPE *array;
public:
Queue(Queue& other);
Queue() { array = new TYPE[size];}
~Queue() { delete [] array; }
Queue& operator=(Queue other) { .... }
TYPE pushAndPop(TYPE x) { .... }
};
同样,将using namespace std
放在头文件中也不是一个好主意。事实上,把它放在任何地方都不是一个好主意。
相关文章:
- 表示"accepting anything for this template argument" C++概念的通配符
- Pybind11:将元组列表从Python传递到C++
- 从链接列表c++中删除一个项目
- 如何(从固定列表中)选择一个数字序列,该序列将与目标数字相加
- C++如何通过用户输入删除列表元素
- 读取文件的最后一行并输入到链接列表时出错
- 复制列表初始化的隐式转换的等级是多少
- LNK2038、MSVS2017 MAGMA的原因列表
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- 修复第三方代码:"error: ‘enable_if’ in namespace ‘std’ does not name a template type"
- 参数列表中的可选"name"?
- 在stl列表c++中查找name
- 错误:在 c++ 中"too few arguements in template class name 'queue' "
- "Name The Template Parameter" 奇数定义
- 如何从template.h和.hpp声明和初始化列表
- 错误:'template<class T> class QList'模板参数列表中参数 1 处的类型/值不匹配
- 在类模板定义中使用template-name代替template-id
- 这"if e is a pack, then get a template name, otherwise get a variable name"有效与否?
- 无效地使用没有参数列表的template-name Queue
- 非类-name c++ 11类型-name是一个simple-template-id