Новичковая функция C не может определить параметры вызова?

#c

#c

Вопрос:

Я не могу определить параметры моего вызова! Это мои прототипы:

 void printIdInfo(ofstream amp;, string , string , const string, string, const string);
void getreadExpression(ifstream amp;fin, double amp;operand1, char amp;oper, double amp;operand2);
void echoExpression (ofstream amp;fout, double amp;, char amp;, double amp;);
  

Это мои определения, которые идут ниже main…

 void getprintIdInfo (ofstream amp;fout, string amp;first_name, string amp;last_name, const string CLASS, string lecture_section, const string DUE_DATE) {
  fout << first_name << " " << last_name << endl
       << CLASS << lecture_section << endl << DUE_DATE << endl;
}

void readExpression (ifstream amp;fin, double amp;operand1, char amp;oper, double amp;operand2) {
  fin >> operand1 >> oper >> operand2;
}

void echoExpression (ofstream amp;fout, double amp; operand1, char amp;oper, double amp;operand2) {
  fout << operand1 << " " << oper << " " << operand2;
}
  

И это мои вызовы, но они вообще не работают, мои параметры не имеют смысла, но я не знаю, как это исправить. заранее спасибо.

 printIdInfo(ostream amp; out, first_nameamp;, last_nameamp;, lecture_sectionamp;);
getreadExpression(finamp;, operand1amp;, operamp;, operand2amp;);
echoExpression(foutamp;, operand1amp;, operamp;, operand2amp;);
  

Комментарии:

1. Уберите amp; из ваших вызовов.

2. Что означает «не работает»? Имена ваших функций не совпадают во всех опубликованных вами фрагментах.

3. я сожалею, что в имени printidinfo и echoexpression не должно было быть get, я переделал это

Ответ №1:

При выполнении вызова не используйте амперсанд. В прототипе уже определено, что это ссылка на переменную. Когда вы используете амперсанд в своем вызове, вы выполняете двоичную операцию AND .

Ответ №2:

   getprintIdInfo (out, first_name, last_name, lecture_section);
  getreadExpression (fin, operand1, oper, operand2);
  getechoExpression (fout, operand1, oper, operand2);
  

Ваш первый вызов, возможно, пытается объявить ostream ссылку и использовать ее в качестве аргумента, я не знаю, что вы пытаетесь там сделать. Остальным amp; суффикс не нужен. На самом деле, amp; суффикс после идентификатора даже не является допустимым синтаксисом. Когда у вас есть аргумент, который принимает указатель, вы можете использовать оператор address-of для его получения getInfo( amp;out ) . Когда аргумент принимает ссылку, вам не нужно писать ничего дополнительного, кроме переменной, на которую нужно ссылаться.