2013-09-22 16 views
-1

Кто-нибудь знает, почему в:C++ код компиляции ошибка

io.cpp:

# include <iostream> 
int ReadNumber() 
{ 
    using namespace std; 
    cout << "Enter a number: "; 
    int x; 
    cin >> x; 
    return x; 
} 

void WriteAnswer(int x) 
{ 
    using namespace std; 
    cout << "The answer is " << x << endl; 
} 

main.cpp:

int ReadNumber(); 
void WriteAnswer(int x); 

int main() 
{ 
    int x = ReadNumber(); 
    int y = ReadNumber(); 
    WriteAnswer(x+y); 
    return 0; 
} 

нет ИНТ х в Readnumber(); форвардная декларация в main.cpp? когда я укладывалась х внутри скобок, компилятор говорит, что: «» функция не принимает 0 Аргументы «

+6

Время, затраченное на прочтение хорошей книги на C++. В вашем 'ReadNumber'' x' является * локальной переменной *. –

+0

"нет int x в Readnumber(), forward declare", потому что вы его не поместили. И вы не должны, потому что это не соответствует определению функции, если вы это сделали, поэтому вы получаете это сообщение об ошибке. Объявление функций должно соответствовать определениям функций. –

+0

Некоторые серьезные недоразумения здесь, но я не уверен, что это такое. Вы объявили ReadNumber без параметров, поэтому вы должны называть его без параметров. Почему вы хотите добавить его, это тайна для меня. Но совершенно правильно компилятор останавливает вас. Кстати, в вашем коде нет «форвардных деклараций». Передовые декларации довольно продвинуты, поэтому я бы забыл о них на данный момент. – john

ответ

1
int ReadNumber(); 

это объявление функции» в основной показывают, что функция ReadNumber не принимает никаких параметров и возвращает Int ,

Если добавить ИНТ х в качестве параметра в ReadNumber декларации (в main.cpp) и определение (в io.cpp):

int ReadNumber(int x) 

ваша функция вызывает к этой функции должен затем включать целое число в качестве параметра. Вот почему вы получаете сообщение «функция не принимает 0 аргументов»: вы вызываете функцию, ожидающую 1 параметр, и ваши вызовы функции не включают никаких.

Вот пример вызова функции ReadNumber включая параметр:

int YourParamUsedInReadNumber = 0;  
int x = ReadNumber(YourParamUsedInReadNumber); 

Как было предложено в комментариях, вероятно, вы должны получить книгу хорошо C++, чтобы получить хорошее сцепление основы программирования, прежде чем идти дальше.

Смежные вопросы