我正在尝试使用 C++ 中的模板创建一个堆栈,对于 Pop 函数来说一切正常,它返回项目的地址而不是实际值,代码如下。
template <typename T>
class Stack {
const int size;
T* data;
int index;
public:
Stack(){};
Stack (const int S);
~Stack(){delete [] data;};
bool Push (const T& info);
T Pop ();
bool is_empty();
};
template <typename T>
Stack <T> ::Stack (const int S) : size(S) // Stack CTOR
{
this->data = new T [this->size];
this->index=0;
}
template <typename T>
bool Stack<T> ::Push (const T& info)
{
if(index==(size-1))
return false;
else{
this->data[index] = info;
index++;
return true;}
}
template <typename T>
T Stack <T> ::Pop ()
{
index--;
return (this->data[index+1]);
}
template <typename T>
bool Stack<T> ::is_empty()
{
if(index==0){return true;}
else
return false;
}
main() 是:
Stack <int> Sint (10);
Sint.Push(6);
int X = Sint.Pop();
cout<<X; // prints out the address and not the value
提前致谢 !