我的计划是制作一个简单的加法计算器,然后从那里开始。 请记住,这是我的第一天编码。
#include <iostream>
#include <string>
using namespace std;
int a;
int b;
int sum;
string ans;
class CalcClass{
public:
int add (int a, int b) {
cout << "Pick the numbers you want to add" << endl;
cin >> a >> b;
sum = a + b;
return sum;
}
};
添加了string ans;
(位于顶部)。现在我得到"error: no matching function for call to 'CalcClass::add()'"
如果我已创建calcObject
并使用calcObject.add();
来调用该函数,为什么会这样说呢?
void pickFunction(){
cout << "What Function do you want to do? \n Add, Subtract, multiply, or divide? ";
cin >> ans;
if (ans == "add"){
CalcClass calcObject;
calcObject.add();
}
int main(){
pickFunction();
cout << "Your answer is : " << sum << endl;
return 0;
}
答案 0 :(得分:1)
CalcClass.calcObject;
不是创建对象的方法。应使用.
运算符来访问对象的成员/方法。因此,创建一个像 -
CalcClass calcObject;
如果在编译器可以看到定义之前进行对象实例化,那么类的前向声明也没有用。因此,请确保编译器在pickFunction()之前看到CalcClass
。话虽如此,你必须从main调用pickFunction
来为你的程序做任何有用的事情。
从The Definitive C++ Book Guide挑选一本书并开始阅读。
答案 1 :(得分:1)
ans
需要一种类型(可能是string
),add
需要引号("add"
),CalcClass.calcObject;
需要CalcClass calcObject;
。< / p>
'dot'语法(x.y
)用于访问存储在对象内部的数据或函数,而不是类(例如calcObject.add();
而不是CalcClass.add();
)。
另外,正如Mahesh所说,pickFunction();
需要在main
。这应该如下所示:
void pickFunction(){
//code
}
int main() {
pickFunction();
//...
}