标题大部分都是这样说的。我的变量“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 length;
public:
genericStack(int);
void push(T);
T pop();
};
#endif // GENERICSTACK_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;
}
答案 0 :(得分:3)
您的构造函数不会将长度设置为零。当你将它用作数组索引时,你会踩踏内存,破坏数据。