C++ 堆栈泛型类,int 变量将 32765 作为值而不是 1

C++ Stack generic class, int variable getting 32765 as value instead of 1

本文关键字:32765 泛型类 堆栈 int 变量 C++      更新时间:2023-10-16

标题说明了大部分内容。我的变量"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;
}
构造

函数未将长度设置为零。当您将其用作数组索引时,您会踩到内存,从而损坏数据。