C++:错误 C2143:语法错误:'<'之前缺少';'
C++: error C2143: syntax error : missing ';' before '<'
#include "stdafx.h"
#include<vector>
template<class T, int capacity = 30>
class Stack {
public:
Stack(){
pool.reserve(capacity);
}
void clear(){
pool.clear;
}
void isEmpty(){
return pool.empty();
}
T& topEl(){
return pool.back();
}
T pop(){
T el = pool.back();
pool.pop_back();
return el;
}
void push(const T& el){
pool.push_back(el);
}
private:
vector<T> pool;
};
int _tmain(int argc, _TCHAR* argv[])
{
//Stack<int,30> test;
return 0;
}
上面是我编写的代码,它概述了堆栈的一个非常通用的向量实现。但是,当我编译它时,我从编译器那里得到了以下错误。
1>------ Rebuild All started: Project: Stack, Configuration: Debug Win32 ------
1> stdafx.cpp
1> Stack.cpp
1>c:userslxjhkdocumentsvisual studio 2013projectsstackstackstack.cpp(31): error C2143: syntax error : missing ';' before '<'
1> c:userslxjhkdocumentsvisual studio 2013projectsstackstackstack.cpp(32) : see reference to class template instantiation 'Stack<T,capacity>' being compiled
1>c:userslxjhkdocumentsvisual studio 2013projectsstackstackstack.cpp(31): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:userslxjhkdocumentsvisual studio 2013projectsstackstackstack.cpp(31): error C2238: unexpected token(s) preceding ';'
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
我真的不明白哪里出了问题,我已经多次对照我的书检查了代码,但找不到任何区别。
vector<T>
模板类在 std
命名空间中定义。不应在标头中使用 using namespace
语句,而应在所有 STL 类型前面加上 std::
...
private:
std::vector<T> pool;
};
...
顺便说一句,假设这不是家庭作业练习,你见过std::stack<T>
吗?( http://www.cplusplus.com/reference/stack/stack/)
void clear(){
pool.clear;
}
应该是
void clear(){
pool.clear();
}
由于vector<T>
在命名空间std
中,您应该使用
std::vector<T> pool;
在类定义中。
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 错误:调用"std::vector<:vector<int>>::p ush_back(std::vector<std::__cxx11::basic_string<
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- &lt;&lt;操作员在C 中超载错误
- opencv 2.4.7在iOS错误背景_segm.hpp #include&lt; list&gt;未找到
- '&lt;'''&lt;'''&quot的模板类错误''令牌”
- 在尝试超载&lt;&lt;时链接错误2005和1169操作员
- 错误:没有匹配'运算符<<"在'std::cout
- 过载<<比如cout错误
- 重载& lt; & lt;为什么我得到以下错误
- 重载ostream&时转换错误无效;operator< & lt;
- 重载<<运算符错误C2804:二进制'运算符<<'参数太多
- 编译器错误,包括'<'代币
- 重载& lt; & lt;错误