2014-11-25 144 views
-1
#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 ========== 

我实在是不明白的地方出了问题,我已经检查的代码对我的书多次,但找不到任何区别。

+3

std :: vector,not vector。 – Barry 2014-11-25 03:12:43

+0

您的包含也缺少一个空格。 – 2014-11-25 03:12:57

+0

哦,那有用。我的书没有std ::。这让我非常困惑!谢谢! – 2014-11-25 03:14:09

回答

1

vector<T>模板类在std命名空间中定义。你不应该在头使用using namespace声明,所以不是你应该前缀的所有STL类型的std::

... 
private: 
    std::vector<T> pool; 
}; 
... 

顺便说一句,假设这是不是一个课外练习,你见过std::stack<T>? (http://www.cplusplus.com/reference/stack/stack/

+0

谢谢!我不知道它退出。 :) – 2014-11-25 03:20:02

1
void clear(){ 
    pool.clear; 
} 

应该

void clear(){ 
    pool.clear(); 
} 

而且,由于vector<T>是在命名空间std,你应该在你的类定义中使用

std::vector<T> pool; 

+0

谢谢你的时间。 – 2014-11-25 03:20:30

相关问题