2016-11-11 2 views
0

UPDATE: Okay, danke an alle! Mein Lehrbuch sagt, dass der Funktionsprototyp erfordert, dass die Funktionen in der Klammer deklariert werden, und die gezeigten Beispiele sehen etwas anders aus als der Code selbst im Funktionskopf und Funktionskörper, also .. Ich ging mit dem, was es mir zeigte. Ich korrigierte es mit dem Vorschlag, die Klammer des Prototyps leer zu lassen und es funktionierte.Aufruf eines Funktionsfehlers in Visual Studio 2015

Für den Rekord hasse ich wirklich diese Lehrbücher ... Vielen Dank noch einmal für Ihre Hilfe!

OP: Ich erhalte diese Fehlermeldung:

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

Der Code ist dies:

#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 

Mein Code sieht aus wie das Beispiel in dem Buch, aber keiner von der Beispiele verwenden die Funktion "char", sie alle verwenden double oder int; nicht sicher, ob das zählt. Der Fehler (in Zeile 12, unten in der Hauptfunktion) ist auch der Code, der von meinem Lehrer geschrieben wurde, nicht von mir, was es für mich noch verwirrender macht. Ich habe Schwierigkeiten, diese Lektion zu verstehen und brauche einen zweiten Standpunkt.

+1

Ändern Sie die Deklaration 'char getLetter (char letter);' in 'char getLetter();', damit die Signatur der Definition entspricht. – songyuanyao

+5

Lesen Sie den Fehler. Schau dir deinen Code an. Es gibt 3 Zeilen mit 'getLetter'. Sehen sie alle gleich aus? – John3136

+0

@songyuanyao Vielen Dank! – CVHansen

Antwort

0

Ihre Funktionsdeklaration Erklärung akzeptiert eine char:

char getLetter(char letter); 

Wenn Sie es ändern wollen, so dass es nicht mehr ein Zeichen als Parameter erfordert, das nur verwenden:

char getLetter(); 

WARUM :

Ihre Funktionssignaturen müssen sein das Gleiche wie deine Funktionsdefinitionen und deine Funktionsaufrufe.

+0

Vielen Dank! Eine bessere Erklärung als das, was mein Lehrbuch mir zeigte. Ich schätze Ihre Hilfe. – CVHansen

0

Die Funktionsdeklaration stimmt nicht mit der Funktionsdefinition überein.

+0

Vielen Dank für Ihre Hilfe. – CVHansen

1

Vor dem Aufruf der Funktion im folgenden Code-Snippet

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

Sie den Namen getLetter als Funktion deklariert, die einen Parameter

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

int main() 

//... 

Der Compiler nicht sieht noch eine weitere Funktion Erklärung hat dass du nach main platziert hast.

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

Also der Compiler gibt einen Fehler aus.

Es ist offensichtlich, dass Sie die Funktion nicht überladen und einen Tippfehler machen würden. Entfernen Sie die Parameterdeklaration in der Funktionsdeklaration vor main.

+0

Danke für die Erklärung, Vlad. Ich schätze Ihre Hilfe! – CVHansen

+0

@CVHansen Kein Problem. Bitte schön.:) –