重载<<<<<<操作者

时间:2011-10-16 03:48:47

标签: c++ compiler-errors operator-overloading

我正在尝试重载<<我的Currency类的运算符,但是我收到此编译器错误: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 个答案:

答案 0 :(得分:8)

ostreamnamespace 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 <>不建议在文件顶部进行实际编程。我把这部分仅仅用于了FYI。