#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;
}
上面是我写的代码,它描述了一个非常通用的堆栈向量实现。但是,当我编译它时,我从编译器中得到了以下错误。C++:错误C2143:语法错误:缺少';'之前'<'
1>------ Rebuild All started: Project: Stack, Configuration: Debug Win32 ------
1> stdafx.cpp
1> Stack.cpp
1>c:\users\lxjhk\documents\visual studio 2013\projects\stack\stack\stack.cpp(31): error C2143: syntax error : missing ';' before '<'
1> c:\users\lxjhk\documents\visual studio 2013\projects\stack\stack\stack.cpp(32) : see reference to class template instantiation 'Stack<T,capacity>' being compiled
1>c:\users\lxjhk\documents\visual studio 2013\projects\stack\stack\stack.cpp(31): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\lxjhk\documents\visual studio 2013\projects\stack\stack\stack.cpp(31): error C2238: unexpected token(s) preceding ';'
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
我实在是不明白的地方出了问题,我已经检查的代码对我的书多次,但找不到任何区别。
std :: vector,not vector。 – Barry 2014-11-25 03:12:43
您的包含也缺少一个空格。 – 2014-11-25 03:12:57
哦,那有用。我的书没有std ::。这让我非常困惑!谢谢! – 2014-11-25 03:14:09