编码很新,所以请理解;)
我基本上是尝试使用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
我收到错误:'main'声明中有两种或更多数据类型
请解释这意味着什么/如何解决它。
我也想知道是否需要为每个函数创建一个新对象(加,减,乘和除)
请帮忙!
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;
}
答案 0 :(得分: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!
现在看来这些可能只是复制/粘贴错误。如果是这种情况,那么你可能只是忘记了类定义末尾的分号。
答案 1 :(得分:1)
考虑以下计划:
class C
int main() {
}
class C {
}
void someFunc(){}
这基本上是你的程序归结为必需品。以下是错误:
error: two or more data types in declaration of 'main' error: expected ';' after class definition
以下是更正后的代码:
class C; //<--semicolon in forward declaration
int main() {
}
class C {
}; //<--semicolon after class definition
void someFunc(){}
答案 2 :(得分: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条件之外编写该语句以避免重复,因为无论如何都不会重复该语句。