谁能解释此错误并使用array和typedef char以及使用array实现堆栈的最佳方案?
typedef char StackItemType;
class stack {
public:
stack(int size)
{
items = new StackItemType[size];
maxstack = size;
top = -1;
}
~stack() {
delete[] items;
}
bool isEmpty();
bool isFull();
bool push(char newitem);
bool pop(char *stacktop);
private:
StackItemType *items;
int top, maxstack;
};
int main()
{
StackItemType c ;
stack stack(5);
stack.push('a');
stack.push('b');
stack.push('c');
cout << c;
cout << endl;
system("pause");
}
答案 0 :(得分:1)
在代码中,您声明一个变量c
。然后,您尝试对变量进行的第一件事就是打印其值。但是您从未给它提供一个值,因此编译器会为您提供“未初始化的局部变量”错误。就是这个意思,您在给变量赋值之前尝试使用变量的值。
我猜您是要为c
提供栈顶项目的值。如果是这样,那么您应该已经编写了这段代码
StackItemType c ;
stack stack(5);
stack.push('a');
stack.push('b');
stack.push('c');
stack.pop(&c); // <<--- new code here that gives c a value
cout << c;
cout << endl;
system("pause");