Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;堆栈泛型类,int变量的值为32765,而不是1_C++_Qt_Variables - Fatal编程技术网

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

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

这个标题说得最多。我的变量“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
\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;
或引发异常。请不要编辑问题来修复问题。这会使答案毫无意义。好的,抱歉。感谢您的深入了解。