C++ 语法错误:缺少'';在'之前<';
错误行4 及 (第53行):请参阅对正在编译的类模板实例化“ArrayStack”的引用C++ 语法错误:缺少'';在'之前<';,c++,syntax-error,C++,Syntax Error,错误行4 及 (第53行):请参阅对正在编译的类模板实例化“ArrayStack”的引用 #ifndef ARRAYSTACK #define ARRAYSTACK template <typename T> class ArrayStack: public Stack<T> { private: T* data; int top; int size; public: ArrayStack(){ top = 0;
#ifndef ARRAYSTACK
#define ARRAYSTACK
template <typename T>
class ArrayStack: public Stack<T>
{
private:
T* data;
int top;
int size;
public:
ArrayStack(){
top = 0;
data = new T[10];
size = 10;
}
~ArrayStack(){
delete[] data;
}
void push(const T &t){
if(top==size-1){
T* data2 = new T[(size*size)];
for(int i=0; i<size; size++){
data2[i] = data[i];
}
*data = *data2;
data[top+1] = t;
size= size*size;
top = top+1;
}
else{ data[top+1] = t; top = top+1;}
}
T pop() {
if(this.isEmpty==true){
throw std:: out_of_range " The stack is empty";
}
else{
return data[top];
top = top-1;
}
}
T peek() const{
return data[top];
}
bool isEmpty(){
if(top==0) return true;
else return false;
}
};
#endif
\ifndef ARRAYSTACK
#定义阵列堆栈
模板
类ArrayStack:公共堆栈
{
私人:
T*数据;
int top;
整数大小;
公众:
ArrayStack(){
top=0;
数据=新的T[10];
尺寸=10;
}
~ArrayStack(){
删除[]数据;
}
无效推力(常数T&T){
如果(顶部==尺寸-1){
T*data2=新的T[(尺寸*尺寸)];
对于(int i=0;我这里定义了堆栈
定义?包括该头文件。我猜您正在使用msvc,忘记在另一个头文件的类/结构/枚举的定义末尾添加分号。堆栈
的定义在哪里?您没有\Include
的定义,所以这将是一个问题。您知道吗在尝试将std::抛出\u范围“堆栈为空”时也会遇到问题;
首先是因为您没有包含stdexcept
,其次是因为语法错误。向我们显示代码时,向我们显示所有相关代码。错误很可能出现在标题中(忘记关闭类声明?)谢谢大家把它弄明白了。忘了把我的书堆放进去。h谢谢你,亚尔
#ifndef STACK
#define STACK
template <typename T>
class Stack {
public:
virtual ~Stack() {}
virtual void push(const T &t) = 0;
virtual T pop() = 0;
virtual T peek() const = 0;
virtual bool isEmpty() const = 0;
};
#endif