"无效使用非静态成员函数"这是什么?

Car*_*izz 4 c++ syntax class function

编辑:感谢所有快速反应,我现在对这个概念有了更好的理解.此外,我将尝试下次更清楚我的错误消息.编辑:用我最新的代码更新.错误发生在第18行.另外,我开始怀疑我的最新问题是否与原始类本身有关?

我正在尝试用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()'
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

#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;
}
Run Code Online (Sandbox Code Playgroud)

Kir*_*rov 10

开发人员应该学会做的最重要的事情之一就是阅读编译器的消息.很明显:

error: no matching function for call to 'Addition::add()'
Run Code Online (Sandbox Code Playgroud)

你班上的功能是

int add (int x, int y)
Run Code Online (Sandbox Code Playgroud)

它需要2个参数而你没有通过:

addobj.add();
Run Code Online (Sandbox Code Playgroud)

你有2个选择:

  • 在你的内部创建和初始化x并将它们作为参数传递ymain
  • 使add不带参数的创建xy内部add的身体,因为它们的值是从用户输入作出.

在这种情况下,作为函数的名称add,我选择了第一个选项:

  • int x, y;在你的内部宣布main
  • 读取内部的用户输入main(您使用的部分cincout)
  • 传递xy作为参数,add像这样:addobj.add( x, y );
  • 存储结果(如果需要),如下所示: int result = addobj.add( x, y );