所以我创建了一个如下所示的堆栈。变量 top 应该代表当前索引,或者#34; top index"。因此,通过进行一些测试,构造函数进行调用,top 的值为 -1,而程序仍在运行构造函数方法。但是,在创建堆栈对象并测试以查看 top 的值是什么之后,我一直是最高的32767.从字面上看,主要做的就是创建一个新的堆栈
Stack s; //Testing while this is running to see value of top... I get -1
//Testing here to see value of top... I get 32767
-
如下所示创建堆栈。
#ifndef __STACK_H_
#define __STACK_H_
class Stack{
int stackSize;
int top;
char* items;
public:
Stack();
~Stack();
void push(char c);
char pop();
bool isFull();
bool isEmpty();
};
#endif
实施如下:
/* STACK IMPLEMENTATION FILE */
#include "stack.h"
#include <iostream>
using namespace std;
Stack::Stack(){
cout << "Ctor is run." << endl;
stackSize = 10; //Stack Size is 10
int top = -1; //Currently empty stack
cout << top << endl;
items = new char[stackSize];
}
Stack::~Stack(){ //Destructor
delete[] items;
}
void Stack::push(char c){ //Push next into stack
items[++top] = c;
cout << top << endl;
}
char Stack::pop(){ //Pop one from stack
return items[top--];
}
bool Stack::isFull(){ //Checks to see if stack is full
if (top + 1 == stackSize) return true;
}
bool Stack::isEmpty(){ //Checks to see if stack is empty
if (top == -1) return true;
}
答案 0 :(得分:4)
您希望构造函数中的top = 1
不是int top = 1
。前者分配给成员,后者初始化一个超出构造函数末尾范围的局部变量。