当我尝试制作模板Stack类
时,我遇到了一个错误类Stack'没有使用模板参数“&gt;template <class T>
class Stack{ /// Declare A NEW Class NAMED STACK
private :
T* data;
int pointer;
int size1;
public :
T pop();
T top();
bool push(T);
bool isfull();
bool isempty();
Stack(int size1)
{
this->size1 = size1;
pointer = 0;
data = new int [size1];
}
~Stack()
{
delete [] data;
}
};
真正的问题是我想在模板类之外定义函数!!(更易读)但它不起作用!!
这是我对其中一个功能的定义:
template <class T>
bool Stack<T>::isfull()
{
if(pointer==size1+1)
return true;
return false;
}
如果此函数的定义步入类代码块,它工作正常但是......?!
这就是我如何称呼它: 堆栈运算符(大小);
答案 0 :(得分:3)
您是否错过了某个功能定义中的<T>
?即有这个:
template <class T>
bool Stack::isempty()
而不是:
template <class T>
bool Stack<T>::isempty()
^^^
答案 1 :(得分:0)
经过多年的c ++编程,我意识到:
如果你不知道如何在c ++中使用模板,你只知道一半的C ++。
长话短说,有两种方法可以定义模板类:
一个。摆脱cpp文件,将所有函数的主体放在类h文件
中B中。将函数体放在cpp文件中,但不要在项目中添加此文件。并在h文件的最后添加一个这样的包含行:
#include "xxxx.cpp"
您不必将其称为cpp,您可以随意调用它
答案 2 :(得分:0)
您没有向我们提供此详细信息,但您可能只是错误地尝试在cpp文件而不是头文件中实现该功能。
模板函数需要在头文件中实现。