简单的操作符重载问题
#include <iostream>
#include <string>
class WordCount
{
friend ostream& operator<<(ostream&,const WordCount&);
public:
WordCount(string word,int cnt)
:_word(word),_occurs(cnt)
{}
private:
string _word;
int _occurs;
};
ostream& WordCount::operator<< (ostream& os,const WordCount& wd)
{
os << "<" << wd._occurs << ">" << wd._word;
return os;
}
///////////
#include <iostream>
#include <string>
#include "WordCount.h"
using namespace std;
int main()
{
WordCount wd("sadness",12);
cout << "wd:\n" <<wd <<endl;
return 0;
}
///////////
看不出哪里错了,编译的时候出现了若干错误
:\code_cplus\cplus\wordcount.h(6) : error C2143: syntax error : missing ';' before '&'
d:\code_cplus\cplus\wordcount.h(6) : error C2433: 'ostream' : 'friend' not permitted on data declarations
d:\code_cplus\cplus\wordcount.h(6) : error C2501: 'ostream' : missing storage-class or type specifiers
d:\code_cplus\cplus\wordcount.h(6) : error C2244: 'ostream' : unable to resolve function overload
d:\code_cplus\cplus\wordcount.h(6) : error C2061: syntax error : identifier 'ostream'
d:\code_cplus\cplus\wordcount.h(6) : error C2501: '<<' : missing storage-class or type specifiers
d:\code_cplus\cplus\wordcount.h(6) : error C2805: binary 'operator <<' has too few parameters
d:\code_cplus\cplus\wordcount.h(8) : error C2629: unexpected 'class WordCount ('
d:\code_cplus\cplus\wordcount.h(8) : error C2334: unexpected token(s) preceding ':'; skipping apparent function body
d:\code_cplus\cplus\wordcount.h(12) : error C2146: syntax error : missing ';' before identifier '_word'
d:\code_cplus\cplus\wordcount.h(12) : error C2501: 'string' : missing storage-class or type specifiers
d:\code_cplus\cplus\wordcount.h(12) : error C2501: '_word' : missing storage-class or type specifiers
d:\code_cplus\cplus\wordcount.h(15) : error C2143: syntax error : missing ';' before '&'
d:\code_cplus\cplus\wordcount.h(15) : error C2501: 'ostream' : missing storage-class or type specifiers
d:\code_cplus\cplus\wordcount.h(15) : error C2061: syntax error : identifier 'ostream'
d:\code_cplus\cplus\wordcount.h(16) : error C2501: '<<' : missing storage-class or type specifiers
d:\code_cplus\cplus\wordcount.h(17) : error C2065: 'os' : undeclared identifier
d:\code_cplus\cplus\wordcount.h(17) : error C2297: '<<' : illegal, right operand has type 'char [2]'
d:\code_cplus\cplus\wordcount.h(17) : error C2065: 'wd' : undeclared identifier
d:\code_cplus\cplus\wordcount.h(17) : error C2228: left of '._occurs' must have class/struct/union type
d:\code_cplus\cplus\wordcount.h(17) : error C2228: left of '._word' must have class/struct/union type
D:\Code_Cplus\CPLUS\output.cpp(9) : error C2661: 'WordCount::WordCount' : no overloaded function takes 2 parameters
D:\Code_Cplus\CPLUS\output.cpp(10) : error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class WordCount' (or there is no acceptable conversion)
Error executing cl.exe.
CPLUS.exe - 23 error(s), 0 warning(s)
请大侠们指教