【发布时间】:2019-11-08 23:02:13
【问题描述】:
我正在尝试使用数组来实现堆栈。在尝试将堆栈传递到 else 语句之后的参数时,我收到的是 main 。我有什么误解?任何帮助,将不胜感激!
错误主要在stack(input, &stack)
没有匹配的函数调用'calc(std::string&, MyStack*)
没有已知的参数 2 从“Stack*”到“int&”的转换。
【问题讨论】:
我正在尝试使用数组来实现堆栈。在尝试将堆栈传递到 else 语句之后的参数时,我收到的是 main 。我有什么误解?任何帮助,将不胜感激!
错误主要在stack(input, &stack)
没有匹配的函数调用'calc(std::string&, MyStack*)
没有已知的参数 2 从“Stack*”到“int&”的转换。
【问题讨论】:
错误消息是不言自明的。 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() 的实现甚至根本没有使用 stack 参数!因此,只需将其完全删除:
void calc(const string &input)
...
stack.calc(input);
当calc() 已经可以通过其隐式this 参数访问对象时,main() 没有理由将其stack 对象作为参数传递。
此外,calc() 内部的 x 和 y 局部变量在用于计算 result 之前不会使用任何值进行初始化。您可能打算 *parsetheinput` 在使用它们之前提取值。
【讨论】: