C++ 错误:找不到匹配的函数

C++ 错误:找不到匹配的函数,c++,function,class,object,compiler-errors,C++,Function,Class,Object,Compiler Errors,我在说这样的话时出错了: error: no matching function for call to 'Expression::shuntingYard(Expression&)' 函数在名为Expression.h的头文件夹中声明。我看不出有什么问题。我还包括了所有必要的预处理器指令 包括以下文件: main.cpp #包括 #包括“Expression.h” 使用名称空间std; int main() { 表达式表达式(“2*(3+1)”; //设置x=5 //表达式实例化变量

我在说这样的话时出错了:

error: no matching function for call to 'Expression::shuntingYard(Expression&)'
函数在名为Expression.h的头文件夹中声明。我看不出有什么问题。我还包括了所有必要的预处理器指令

包括以下文件:

main.cpp
#包括
#包括“Expression.h”
使用名称空间std;
int main()
{
表达式表达式(“2*(3+1)”;
//设置x=5
//表达式实例化变量('x',5);
//设置y=3
//表达式实例化变量('y',3);

cout所声明的函数
调车场
通过值获取
字符串
,而不是通过引用获取
表达式

作为旁注,将
运算符字符串()
添加到
类表达式中可以解决您的问题:

operator string() const
{
    return expression;
}

补充

这也是一个选择(我个人更喜欢):


在这种情况下,删除
常量将允许您在外部更改
表达式
成员变量。

声明的函数
调车场
按值获取
字符串,而不是按引用获取
表达式

作为旁注,将
运算符字符串()
添加到
类表达式中可以解决您的问题:

operator string() const
{
    return expression;
}

补充

这也是一个选择(我个人更喜欢):


在这种情况下,删除
常量将允许您在外部更改
表达式
成员变量。

声明的函数
调车场
按值获取
字符串,而不是按引用获取
表达式

作为旁注,将
运算符字符串()
添加到
类表达式中可以解决您的问题:

operator string() const
{
    return expression;
}

补充

这也是一个选择(我个人更喜欢):


在这种情况下,删除
常量将允许您在外部更改
表达式
成员变量。

声明的函数
调车场
按值获取
字符串,而不是按引用获取
表达式

作为旁注,将
运算符字符串()
添加到
类表达式中可以解决您的问题:

operator string() const
{
    return expression;
}

补充

这也是一个选择(我个人更喜欢):


在这种情况下,删除
常量将允许您在声明函数的类定义中更改
表达式
外部的成员变量。

string shuntingYard(string);
具有类型为
std::string

但是,在main中,您使用相同的名称调用函数,但传递类型为
Expression

cout << "Answer: " << expr.shuntingYard(expr) << endl;

cout在您声明函数的类定义中

string shuntingYard(string);
具有类型为
std::string

但是,在main中,您使用相同的名称调用函数,但传递类型为
Expression

cout << "Answer: " << expr.shuntingYard(expr) << endl;

cout在您声明函数的类定义中

string shuntingYard(string);
具有类型为
std::string

但是,在main中,您使用相同的名称调用函数,但传递类型为
Expression

cout << "Answer: " << expr.shuntingYard(expr) << endl;

cout在您声明函数的类定义中

string shuntingYard(string);
具有类型为
std::string

但是,在main中,您使用相同的名称调用函数,但传递类型为
Expression

cout << "Answer: " << expr.shuntingYard(expr) << endl;

所以你没有这样的函数签名,你也没有提供从
表达式到
std::string
的任何自动转换。所以你没有这样的函数签名,你也没有提供从
表达式到
std::string
的任何自动转换。所以你没有这样的函数签名re,并且您也不提供从
Expression
std::string
的任何自动转换。因此您没有此类函数签名,也不提供从
Expression
std::string
的任何自动转换。