Проблемы с перегрузкой << Оператора - PullRequest
2 голосов
/ 16 октября 2011

Я пытаюсь перегрузить оператор << для моего класса Currency, но я получаю эту ошибку компилятора: <code>C2143: syntax error : missing ';' before '&'

В моем файле .h у меня есть:

 friend ostream &operator << (ostream &, const Currency&);

И в моем файле Currency.cpp у меня есть:

    ostream &operator << (ostream &stream, const Currency &obj){
      stream<<"$"<<obj.dollars<<"."<<obj.cents;
      return stream;
      }

Все до сих пор работало нормально, но задохнулся, когда я вставил это:

В верхней части моего файла .h есть следующее:

    #ifndef CURRENCY_H
    #define CURRENCY_H

  #include<iostream>
  #include<string>
  #include<ostream>
  #include<sstream>

  class Currency; //forward delcaration

  //Function prototypes for overloaded stream operators
  ostream &operator << (ostream &, const Currency &);

Понятия не имею, что я делаю не так. Помощь была бы отличной. Спасибо

1 Ответ

9 голосов
/ 16 октября 2011

ostream объявлен в namespace std, и перед вами отсутствует std:: идентификатор:

std::ostream &operator << (std::ostream &, const Currency &);

Если вы хотите избежать std::, то после заголовочного файла вы можете поставить using namespace выражение:

...
#include<ostream>
using namespace std;  // this is not desirable though in real world programming

ostream &operator << (ostream &, const Currency &);

Редактировать: using namespace <> не рекомендуется в реальном программировании в верхней части файла. Я поместил эту часть только для вашего сведения.

...