2016-11-11 7 views
0

更新:よろしくお願い申し上げます。私の教科書によれば、関数プロトタイプでは関数を括弧で宣言する必要があり、関数の見出しや関数本体のコード自体とは若干異なって見えるので、私はそれを見せてくれました。プロトタイプの括弧を空のままにしておき、それがうまくいったという提案で修正しました。Visual Studioで関数エラーを呼び出す2015

記録のために、私は本当にこれらの教科書を憎む...あなたの助けをもう一度ありがとう!

OP: 私はこのエラーを取得しています:

C2660 'getLetter': function does not take 0 arguments.

コードはこれです:

#include <iomanip> 
#include <iostream> 
#include <cmath> 
using namespace std; 

char getLetter(char letter); 

int main() 
{ 
    char firstLetter = getLetter(); 
     cout << firstLetter; 
    return 0; 
} //end of main function 

char getLetter() 
{ 
    char letter = ' '; 
    cout << "Enter a character: "; 
    cin >> letter; 
    return letter; 
} // end of getLetter function 

私のコードは本の中で与えられた例のように見えませんが、のどれも例は "char"関数を使用し、それらはすべてdoubleまたはintを使用します。それが重要かどうかはわかりません。エラー(12行目、main関数の最下部)も私のインストラクターによって書かれたコードであり、私にとってはそれがさらに混乱します。私はこのレッスンを苦労しており、第二の視点が必要です。

+1

'char getLetter(char letter);'を 'char getLetter();'に変更して、その署名と定義が一致するようにします。 – songyuanyao

+5

エラーを読んでください。あなたのコードを見てください。それらには 'getLetter'が3行あります。彼らは皆同じ​​ように見えますか? – John3136

+0

@songyuanyaoありがとう! – CVHansen

答えて

0

あなたの関数宣言文はcharを受け入れ:

char getLetter(char letter); 

あなたはそれがもはやパラメータとして文字を必要とするように、それを変更しないようにしたい場合は、ちょうどこの使用:

char getLetter(); 

WHYを:

あなたの機能の署名でなければなりません関数定義と関数呼び出しと同じです。

+0

ありがとうございました!私の教科書が私に見せていたものよりも良い説明。私はあなたの助けに感謝します。 – CVHansen

0

関数の宣言が関数の定義と一致しません。

+0

ありがとうございます。 – CVHansen

1

は、次のコードスニペット内の関数の呼び出し

int main() 
{ 
    char firstLetter = getLetter(); 
         ^^^^^^^^^^ 
    //... 

前に、コンパイラはまた別の関数宣言を見ていない一つのパラメータ

char getLetter(char letter); 
       ^^^^^^^^^^^ 

int main() 

//... 

を持つ関数として名前getLetterを宣言しましたあなたはメインの後に置いた。

char getLetter() 
{ 
    char letter = ' '; 
    cout << "Enter a character: "; 
    cin >> letter; 
    return letter; 
} // end of getLetter function 

コンパイラはエラーを出します。

あなたは関数を過負荷にするつもりはなく、タイプミスを犯したことは明らかです。 mainの前の関数宣言でパラメータ宣言を削除してください。

+0

説明をありがとう、Vlad。私はあなたの助けに感謝します! – CVHansen

+0

@CVHansen問題ありません。どういたしまして。:) –

関連する問題