2

我的计划是制作一个简单的加法计算器,然后继续前进。请记住,这是我编码的第一天。

#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;
}   
4

2 回答 2

1
CalcClass.calcObject;

不是创建对象的方法。.运算符应用于访问对象的成员/方法。所以,创建一个像 -

CalcClass calcObject;

如果在编译器可以看到定义之前发生对象实例化,则类的前向声明也没有用。因此,请确保编译器CalcClass在 pickFunction() 之前看到。话虽如此,您必须为您的程序调用pickFunctionfrom main 才能执行任何有用的操作。

从The Definitive C++ Book Guide中挑选一本书并开始阅读。

于 2012-07-05T22:18:04.567 回答
1

ans需要一个类型(可能string),add需要引号("add"),CalcClass.calcObject;需要是CalcClass calcObject;

'dot' 语法 ( x.y) 用于访问存储在对象内部的数据或函数,而不是类(例如calcObject.add();,而不是CalcClass.add();)。

此外,正如 Mahesh 所说,pickFunction();需要在main. 这应该如下所示:

void pickFunction(){
    //code
}
int main() {
    pickFunction();
    //...
}
于 2012-07-05T22:21:48.527 回答