我正在尝试用C ++教自己的类和对象。我做了一次只是声明一个void
函数,在屏幕上输出一些东西,在main中调用对象,一切正常。
现在,我想扩展这个并做一个简单的补充。但是,我在代码块上遇到了一些错误:
error: invalid use of non-static member function 'int Addition::add(int, int)'
error: no matching function for call to 'Addition::add()'
这是我的代码:
#include <iostream>
using namespace std;
class Addition {
public:
int add (int x, int y) {
int sum;
sum=x+y;
return sum;
}
};
int main()
{
int num1;
int num2;
int ans=addobj.add(num1,num2);
Addition addobj;
addobj.add(num1,num2);
cout<<"Enter the first number you want to add"<<endl;
cin>>num1;
cout<<"Enter the second number you want to add"<<endl;
cin>>num2;
cout<<"The sum is "<<ans<<endl;
}
答案 0 :(得分:10)
开发人员应该学会做的最重要的事情之一就是阅读编译器的消息。很明显:
error: no matching function for call to 'Addition::add()'
你班上的功能是
int add (int x, int y)
它需要2个参数而你没有传递:
addobj.add();
您有两个选择:
x
内创建并初始化y
和main
并将其作为参数传递add
,在x
的正文中创建y
和add
,因为它们的值来自用户输入。在这种情况下,由于函数的名称是add
,我选择了第一个选项:
int x, y;
main
main
内部的用户输入(您使用的部分cin
和cout
)x
和y
作为参数传递给add
,如下所示:addobj.add( x, y );
int result = addobj.add( x, y );
答案 1 :(得分:4)
您声明了一个方法add(int, int)
,它将两个整数作为参数;你打电话时必须提供这些参数。打印返回的值也很好:
Addition addobj;
std::cout << addobj.add(1, 2) << std::endl;
答案 2 :(得分:1)
你的add
函数有两个参数,但是你用无参数调用它,所以找不到匹配的函数。您必须按照声明的方式调用该函数,即
addobj.add(1, 2);
答案 3 :(得分:1)
你的函数有两个参数但是你在没有提供的情况下调用它。您需要提供函数所需的两个整数参数。为了有用,你也应该存储结果。像这样的东西
int a = 1;
int b = 2;
int result = addjobs.add(a,b);