【问题标题】:no matching function call, no known conversion没有匹配的函数调用,没有已知的转换
【发布时间】:2019-11-08 23:02:13
【问题描述】:

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

错误主要在stack(input, &stack)

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

没有已知的参数 2 从“Stack*”到“int&”的转换。

【问题讨论】:

    标签: c++ arrays stack


    【解决方案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() 的实现甚至根本没有使用 stack 参数!因此,只需将其完全删除:

    void calc(const string &input)
    
    ...
    
    stack.calc(input);
    

    calc() 已经可以通过其隐式this 参数访问对象时,main() 没有理由将其stack 对象作为参数传递。

    此外,calc() 内部的 xy 局部变量在用于计算 result 之前不会使用任何值进行初始化。您可能打算 *parsetheinput` 在使用它们之前提取值。

    【讨论】:

      猜你喜欢
      • 2015-06-13
      • 2020-10-07
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 2018-07-22
      • 1970-01-01
      • 2021-09-21
      相关资源
      最近更新 更多