我正在尝试使用数组实现堆栈。我正在尝试在else语句之后将堆栈传递到参数时收到main。我有什么误会?任何帮助,将不胜感激!
错误主要来自appletree
没有匹配的函数调用‘calc(std :: string&,MyStack *)
未知参数2从'Stack *'到'int&'的转换。
答案 0 :(得分:1)
错误消息是不言自明的。 calc()
没有与您传递的参数相匹配的重载版本。您将calc()
声明为:
void calc(const string &input, int &stack)
该错误消息表示您正在传递MyStack*
指针,而该指针应该是int
。
stack.calc(input, &stack); // <-- stack is a MyStack, so &stack is a MyStack*
为此,您对calc()
的实现甚至根本没有 USE stack
参数!因此,将其完全删除:
void calc(const string &input)
...
stack.calc(input);
当main()
已通过其隐式stack
参数访问该对象时,calc()
没有理由将其this
对象作为参数传递。
此外,x
内的y
和calc()
局部变量在用于计算result
之前不会被任何值初始化。您可能打算在使用它们之前先* parse the
input`以提取值。