C++ C++;堆栈泛型类,int变量的值为32765,而不是1
这个标题说得最多。我的变量“full”的值是3276,而不是0 这是我的头C++ C++;堆栈泛型类,int变量的值为32765,而不是1,c++,qt,variables,C++,Qt,Variables,这个标题说得最多。我的变量“full”的值是3276,而不是0 这是我的头 #ifndef GENERICSTACK_H #define GENERICSTACK_H #include <iostream> using namespace std; template <class T> class genericStack { int MaxItems; T* stack; int empty; int full; int
#ifndef GENERICSTACK_H
#define GENERICSTACK_H
#include <iostream>
using namespace std;
template <class T> class genericStack
{
int MaxItems;
T* stack;
int empty;
int full;
int length;
public:
genericStack(int);
void push(T);
T pop();
};
#endif // GENERICSTACK_H
\ifndef GENERICSTACK\u H
#定义GENERICSTACK_H
#包括
使用名称空间std;
模板类genericStack
{
整数最大项;
T*stack;
int空;
int-full;
整数长度;
公众:
通用策略(int);
空隙推力(T);
T pop();
};
#endif//GENERICSTACK\u H
这是我的.cpp文件
只有构造函数才是真正重要的。因为Qt调试器显示它不会更改构造函数中的值。它最初是32765
#include "genericstack.h"
template <class T> genericStack<T>::genericStack(int size)
{
MaxItems = size;
stack = new T[MaxItems];
empty = 1;
full = 0;
}
template <class T> void genericStack<T>::push(T item)
{
if(full == 1)
{
cout << "The stack is full.";
}else
{
stack[length] = item;
length++;
empty = 0;
}
if(length == MaxItems)
full = 1;
}
template <class T> T genericStack<T>::pop()
{
T temp;
if(empty == 1)
{
cout<< "The stack is already empty.";
return NULL;
}else
{
temp = stack[length];
stack[length] = NULL;
length--;
full = 0;
}
if(length == 1)
empty = 1;
return temp;
}
#包括“genericstack.h”
模板genericStack::genericStack(int-size)
{
MaxItems=大小;
堆栈=新的T[MaxItems];
空=1;
满=0;
}
模板void genericStack::push(T项)
{
如果(满==1)
{
cout你的构造函数没有将长度设置为零。当你使用它作为数组索引时,你会践踏内存,破坏数据。谢谢!当网站允许我时,我会选择这个作为正确答案。当我将长度放入构造函数时,full会被固定,但无论我给它什么值,长度都只设置为0。你能告诉我为什么吗?Thanks.在genericstack.cpp中的pop()方法中,堆栈现在不存储值。我想我需要进行大量调试。感谢所有帮助!我可能会尝试自己修复它。使用return temp;
或引发异常。请不要编辑问题来修复问题。这会使答案毫无意义。好的,抱歉。感谢您的深入了解。