c++模板类的使用
ifndef LINKSTACK_H_INCLUDED
define LINKSTACK_H_INCLUDED //linkstack.h
using namespace std;
template <typename T>
class LinkStack{
private:
LinkStack<T>* mc_lin; //栈指针int mc_size; //最大容量
int mc_top; //栈顶
public:
LinkStack(T size); //构造函数~LinkStack(); //析构函数
bool stackEmpty();
bool stackFull();
void clearStack();//清空栈中的元素
bool push(T elem);//压栈
bool pop(T &elem);//弹栈
bool getTop(T &elem);//获取栈顶元素
int stackLength();//栈的长度
void traverse();//遍历栈
};
endif // LINKSTACK_H_INCLUDED //头文件编译通过
include"linkstack.h" //linkstack.cpp
include<iostream>
template <typename T>
LinkStack<T>::LinkStack(T size){
mc_size=size;mc_lin=new T[mc_size];
mc_top=0;
}
template <typename T>
LinkStack<T>::~LinkStack(){
delete mc_lin;mc_lin=NULL;
}
template <typename T>
bool LinkStack<T>::stackEmpty(){
return mc_top==0?true:false;
}
template <typename T>
bool LinkStack<T>::stackFull(){
return mc_top>=mc_size?true:false;
}
template <typename T>
void LinkStack<T>::clearStack(){
mc_top=0;
}
template <typename T>
bool LinkStack<T>::push(T elem){
if(stackFull()) return false;else{
mc_lin[mc_top++]=elem;
return true;
}
}
template <typename T>
bool LinkStack<T>::pop(T &elem){
if(stackEmpty()) return false;else{
elem=mc_lin[--mc_top];
return true;
}
}
template <typename T>
bool LinkStack<T>::getTop(T &elem){
if(stackEmpty()) return false;else{
elem=mc_lin[mc_top-1];
return true;
}
}
template <typename T>
int LinkStack<T>::stackLength(){
return mc_top;
}
template <typename T>
void LinkStack<T>::traverse(){
for(int i=0;i<mc_top;i++) cout<<mc_lin[i]<<"\t";
}
include<iostream>
include"linkstack.h"
int main()
{
LinkStack<int> s(5);
}
c++初学者,找不出哪有bug,希望有高人能指点一下,感激不尽!
回答:
你是不是只编译了main
函数的那个cpp
文件,而没有编译linkstack.cpp
。
两个cpp
文件需要一起编译的。
话说这问题的代码排版简直是灾难。
以上是 c++模板类的使用 的全部内容, 来源链接: utcz.com/p/191947.html