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

回到顶部