コードのコンパイル中にエラーが発生しました。
エラー出力:
main.cpp: 35:16: エラー: スイッチ数が整数ではありません
どうしてか分かりません。コードは次のとおりです。
int Values(string letter) {
switch( tolower(letter) ) {
case 'a' : a.setTotal();
break;
よろしく
コードのコンパイル中にエラーが発生しました。
エラー出力:
main.cpp: 35:16: エラー: スイッチ数が整数ではありません
どうしてか分かりません。コードは次のとおりです。
int Values(string letter) {
switch( tolower(letter) ) {
case 'a' : a.setTotal();
break;
よろしく
Astring
は ではなく、char
文字の配列を表すオブジェクトです。string
その関数に a を渡す代わりに、 aを渡す必要がありchar
ます。
tolower(int)
C++ に存在し、文字列ではなく文字を取ることを意図していました。
これを修正する別の方法を次に示します。コードの変更が少なくて済みます。
名前から判断すると が長すぎるletter
と確信しているので、ステートメントを accessに変更できます。これは の最初の文字になります。にも渡す必要があります。string
1
switch
letter[0]
string
letter[0]
tolower
letter
は文字列なのでtolower(letter)
、文字列を生成します。しかし、あなたのケースは文字 ('a') です。さらに、C/C++ では文字列にスイッチを使用することはできません。代わりに次の行を使用します。
switch( tolower(letter.data[0]) )
スイッチの記述は、列挙型 (enum)、chars(char)、または整数 (int、unsigned、long) のみを取ります。
単一のキャラクターで作業したいようです。
関数のパラメーターを変更します。
int Values(string letter)
これに:
int Values(char letter)
そして、switch
ステートメントは機能します。