【发布时间】:2016-10-06 20:32:46
【问题描述】:
最近(昨天哈哈)我开始学习 C++。我正在尝试制作一个简单的计算器来练习。我使用 switch 语句来调用类中的正确方法(或者它是函数.. 不知道 c++ 的细微差别...);
但是,代码不会编译,因为我正在使用一个字符串来定义要使用的情况,并定义多个类以获得相同的结果。
这是 switch 语句(在添加其他错误之前,我只做了添加以消除任何错误):
switch(input){
case 'A': case 'a': case 'add': case 'Add':
cout << bo.addNum();
break;
default:
cout << "Not addition";
break;
}
我得到的错误如下:
basic.cpp:41:2: error: statement requires expression of integer type ('string'
(aka 'basic_string<char, char_traits<char>, allocator<char> >') invalid)
switch(input){
^ ~~~~~
basic.cpp:42:28: warning: multi-character character constant [-Wmultichar]
case 'A': case 'a': case 'add': case 'Add':
^
basic.cpp:42:40: warning: multi-character character constant [-Wmultichar]
case 'A': case 'a': case 'add': case 'Add':
^
以下是全部代码:
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
class beckahClass{
public:
void setNum(int num1, int num2){
a = num1;
b = num2;
}
int addNum(){
return a + b;
}
int subNum(){
return a - b;
}
int divNum(){
return a / b;
}
int multNum(){
return a * b;
}
private:
int a, b;
};
int main (void){
beckahClass bo;
string input;
int a, b;
cout << "Please specify the operation to preform by the following:\n A: add\nS: subtract\nM: Multiple\nD: divide\nEnter operation: ";
cin >> input;
cout << "Enter the two nums you want to preform your operation on: ";
cin >> a >> b;
bo.setNum(a, b);
switch(input){
case 'A': case 'a': case 'add': case 'Add':
cout << bo.addNum();
break;
default:
cout << "Not addition";
break;
}
return 0;
}
我也意识到可能有更有效的方法来使用逻辑;因为我刚刚开始使用 C++,所以我将不胜感激任何批评。我之前一直在简单地查找“地图”,想知道这是否是一个使用它的好实例?
谢谢。
【问题讨论】:
-
AFAIK 你不能有一个字符串参数的 switch 语句。您应该将其更改为 int 或 char。
-
Switch statments 非常适用于枚举,了解枚举,您的计算器仍然可以使用带有枚举的 switch。
-
这篇文章有一些很好的信息开关是什么:okprogrammerblog.com/single-post/2017/12/21/…
标签: c++ switch-statement