#include "MyStack.h"
template<class T>
bool MyStack<class T>::empty(void)
{
return this->top == 0? true : false;
}
template<class T>
void MyStack<class T>::init(void)
{
this->top = 0;
}
template<class T>
T MyStack<class T>::gettop(void)
{
if(empty())
{
cout << "栈为空!\n";
exit(1);
}
return this->data[this->top-1];
}
template<class T>
void MyStack<class T>::push(T x)
{
if(this->top == MAXSIZE)
{
cout << "栈已满!\n";
exit(1);
}
this->data[this->top] =x;
this->top ++;
}
template<class T>
T MyStack<class T>::pop(void)
{
if(this->empty())
{
cout << "栈为空! \n";
exit(1);
}
T e =this->data[this->top-1];
this->top --;
return e;
}
下面是报错,
>f:\c++\中缀变后缀\中缀变后缀\mystack.cpp(5) : error C2649: “typename”: 不是“class”
1>f:\c++\中缀变后缀\中缀变后缀\mystack.cpp(51) : fatal error C1004: 发现意外的文件尾
1>正在生成代码...
1>正在编译...
1>中缀变后缀.cpp
1>正在生成代码...
1>生成日志保存在“file://f:\C++\中缀变后缀\中缀变后缀\Debug\BuildLog.htm”
1>中缀变后缀 - 2 个错误,0 个警告
我想我应该没弄错啊,求大神啊,这是头文件:
#pragma once
template<class T>
class MyStack
{
public:
T data[100];
int top;
public:
bool empty(void);
void init(void);
T gettop(void);
void push(T x);
T pop(void);
};
有人已经帮我找到了,应该将cpp中的函数右侧的class T改为T,再在主函数中包含该类的.cpp就可以了。不过还是谢谢你,这分就给你吧
mystack.cpp(52) : fatal error C1004: 发现意外的文件尾
使用模板类的时候,只要.h,不要.cpp。把mystack.cpp中的所有内容,移到mystack.h中,删除mystack.cpp。C1004的错误,看看是不是文件尾部有全角字符(空格,分号等)。