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
的任何自动转换。