C++ 堆栈泛型类,int 变量将 32765 作为值而不是 1
C++ Stack generic class, int variable getting 32765 as value instead of 1
标题说明了大部分内容。我的变量"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;
}
构造
函数未将长度设置为零。当您将其用作数组索引时,您会踩到内存,从而损坏数据。
相关文章:
- C++泛型类错误,问题出在哪里?
- C++泛型类,单独实现?
- 如何在 C++ 中声明泛型类
- 在C++中分配泛型类
- 基于变量输入的泛型类方法计算
- C++处理取消引用语法的泛型类
- 用于重载的泛型类成员函数
- 将类型作为指向另一个类的对象的指针的泛型类-NOT WORKING
- 在泛型类中使用带有 CUDA 关键字的模板类
- 在类中使用泛型类成员
- 如何在main中重载运算符>泛型类.cpp
- C++泛型类中的字段/属性
- 用返回子类的方法设计C++泛型类
- C++ 堆栈泛型类,int 变量将 32765 作为值而不是 1
- 将资源移出泛型类
- C++中的泛型类
- 可以在泛型类中为一种类型提供一个可用的函数
- 如何在C++中从泛型类创建对象
- 用泛型类指针作为参数声明函数指针的正确语法是什么
- 使用具有结构成员的泛型类时发生c++编译器错误