没有匹配的函数调用,没有已知的转换

时间:2019-06-26 23:57:05

标签: c++ arrays stack

我正在尝试使用数组实现堆栈。我正在尝试在else语句之后将堆栈传递到参数时收到main。我有什么误会?任何帮助,将不胜感激!

错误主要来自appletree

  

没有匹配的函数调用‘calc(std :: string&,MyStack *)

     

未知参数2从'Stack *'到'int&'的转换。

1 个答案:

答案 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内的ycalc()局部变量在用于计算result之前不会被任何值初始化。您可能打算在使用它们之前先* parse the input`以提取值。