2016-11-11 2 views
0

UPDATE: Хорошо, спасибо всем! В моем учебнике говорится, что прототип функции требует, чтобы функции были объявлены в скобках, а приведенные примеры немного отличаются от самого кода в заголовке функции и корпусе функции, поэтому я пошел с тем, что он показывал мне. Я исправил его предложением о том, чтобы оставить скобку прототипа пустым, и это сработало.Вызов функциональной ошибки в 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, внизу основной функции) также является кодом, написанным моим инструктором, а не я, что делает его еще более запутанным для меня. Мне трудно понять этот урок, и мне нужна вторая точка зрения.

+1

Измените объявление 'char getLetter (char letter);' to 'char getLetter();', чтобы его подпись соответствовала определению. – songyuanyao

+5

Прочитать ошибку. Посмотрите на свой код. Есть три строки с 'getLetter' на них. Все ли они выглядят одинаково? – John3136

+0

@songyuanyao Большое вам спасибо! – CVHansen

ответ

0

Ваша функция оператора объявления принимает char:

char getLetter(char letter); 

Если вы хотите, чтобы изменить его так, чтобы он больше не требует полукокса в качестве параметра, просто используйте:

char getLetter(); 

ПОЧЕМУ :

Ваши подписи функций must be так же, как определения функций и вызовы функций.

+0

Большое вам спасибо! Наше лучшее объяснение, чем показывает мой учебник. Я ценю вашу помощь. – CVHansen

0

Объявление функции не соответствует определению функции.

+0

Благодарим за помощь. – CVHansen

1

Перед вызовом функции в следующем фрагменте кода

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

вы объявили имя getLetter как функцию, которая имеет один параметр

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

int main() 

//... 

компилятор не видит еще одну декларацию функции который вы разместили после основного.

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

Поэтому компилятор выдает сообщение об ошибке.

Очевидно, что вы не собираетесь перегружать функцию и сделали опечатку. Удалите объявление параметра в объявлении функции до main.

+0

Спасибо за объяснение, Влад. Я ценю вашу помощь! – CVHansen

+0

@CVHansen проблем нет. Добро пожаловать.:) –