1

コーディングは初めてなので、ご理解ください;)

私は基本的に、whileループとifステートメントを使用して電卓を作成しようとしています。

#include <iostream>

using namespace std;

int x = 1;
int number;
int total = 0;
int amt = 1;
int a;
int b;
int c;
int d;
string ans;

class OperateClass

エラーが表示されます:「メイン」の宣言に 2 つ以上のデータ型があります

これが何を意味するのか/修正方法を説明してください。

また、関数ごとに新しいオブジェクトを作成する必要があるかどうかも疑問に思っていました (加算、減算、乗算、および除算)

助けてください!

int main()
{

    cout << "Do you want to add, subtract, multiply or divide? I want to : " << endl;
    cin >> ans;

    if(ans == "add"){
        OperateClass opOper;
        opOper.add();

    }else{

        if(ans == "subtract"){
            OperateClass opOper
            opOper.subtract();
                }

    }else{

        if(ans == "multiply"){
            OperateClass opOper
            opOper.multiply();
        }

    }else{

        if(ans == "divide"){
            OperateClass opOper
            opOper.divide();

        }
    }

}

class OperateClass{
    public:
        int add(){
            while(x <= 3){
                cout << "Enter a number to use to add: " << endl;
                cin >> a;
                total = total + a;
                x++;
                amt++;
            }
        }

        int subtract(){
            while(x <= 3){
                cout << "Enter a number to use to add: " << endl;
                cin >> b;
                total = total - b;
                x++;
                amt++;
            }
        }

        int multiply(){
            while(x <= 3){
                cout << "Enter a number to use to add: " << endl;
                cin >> c;
                total = total * c;
                x++;
                amt++;
            }
        }

        int divide(){
            while(x <= 3){
                cout << "Enter a number to use to add: " << endl;
                cin >> d;
                total = total / d;
                x++;
                amt++;
            }
        }
}

int print(){
    cout << "Your total is: " << total << endl;

    return 0;
}
4

3 に答える 3

4

そのコードはどれも有効ではありません。でクラス定義を開始しますがclass OperateClass、それを終了してすぐに実行することはありませんmain。(簡略化された) クラス定義は次の形式を取ります。

class [name] {

};  // semi-colon terminates definition

// so...

class OperateClass {

};  

次に…と宣言しますが、分岐(?) mainにつながります。else

int main()
{

    cout << "Do you want to add, subtract, multiply or divide? I want to : " << endl;
    cin >> ans;

    if(ans == "add"){
    OperateClass opOper;
    opOper.add();

}else{  // what is this?

また、関数は閉じ中括弧で終了する必要があります。つまり、

int main() {

}  // function is over!

現在、これらは単なるコピー/貼り付けエラーのようです。その場合は、クラス定義の末尾にあるセミコロンを忘れている可能性があります。

于 2012-07-17T02:01:43.053 に答える
1

次のプログラムを検討してください。

class C

int main() {

}

class C {

}

void someFunc(){}

これは基本的に必要なものだけを煮詰めたプログラムです。エラーは次のとおりです。

エラー: 'main' の宣言に 2 つ以上のデータ型があります
エラー: 予想される ';' クラス定義後

修正されたコードは次のとおりです。

class C; //<--semicolon in forward declaration

int main() {

}

class C {

}; //<--semicolon after class definition

void someFunc(){}
于 2012-07-17T02:07:56.160 に答える
1

構文が正しくなるように、コードを少し変更してみましょう。

int main()
{

    cout << "Do you want to add, subtract, multiply or divide? I want to : " << endl;
    cin >> ans;

    if(ans == "add"){
    OperateClass opOper;
    opOper.add();
        }

else if (ans == "subtract"){
    OperateClass opOper;
    opOper.subtract();
        }

else if (ans == "multiply"){
    OperateClass opOper;
    opOper.multiply();
        }

else if(ans == "divide"){
    OperateClass opOper;
    opOper.divide();

        }
else {} 

} //end of main

クラス変数宣言ステートメント「OperateClass opOper」も各ケースで繰り返されます。そのステートメントはケースに関係なく真であるため、if-else条件の外にそのステートメントを記述して繰り返しを避けることもできます。

于 2012-07-17T02:12:13.133 に答える