我正在尝试重载<<我的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 &);
我不知道我做错了什么。帮助会很棒。感谢
答案 0 :(得分:8)
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 <>
不建议在文件顶部进行实际编程。我把这部分仅仅用于了FYI。