错误:函数声明中有两个或更多数据类型?

时间:2012-07-05 22:15:07

标签: c++ if-statement types declaration

我的计划是制作一个简单的加法计算器,然后从那里开始。 请记住,这是我的第一天编码。

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

2 个答案:

答案 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();
    //...
}