- 论坛徽章:
- 0
|
是书上的例子,是重载操作符 >>和<<,
我照打一遍,但编译的时候出错了,出错信息
19 I:\clang\class\reop\reop.cpp `char PhoneNumber::areaCode[4]' is private
20 I:\clang\class\reop\reop.cpp `char PhoneNumber::exchange[4]' is private
21 I:\clang\class\reop\reop.cpp `char PhoneNumber::line[5]' is private
虽然private成员数据,但是已经是friend函数了,为什么会这样呢?
以下是源码:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::ostream;
using std::istream;
#include <iomanip>
using std::setw;
class PhoneNumber{
friend ostream &operator <<(ostream &,const PhoneNumber &);
friend istream &operator >>(istream &,const PhoneNumber &) ;
private:
char areaCode[4];
char exchange[4];
char line[5];
};
ostream &operator <<(ostream &output,const PhoneNumber &num)
{
output <<"("<<num.areaCode<<")"
<<num.exchange<<"-"<<num.line;
return output;
}
istream &operator >>(istream &input,PhoneNumber &num)
{
input.ignore();
input>>setw(4)>>num.areaCode;
input.ignore(2);
input>>setw(4)>>num.exchange;
input.ignore();
input>>setw(5)>>num.line;
return input;
}
int main()
{
PhoneNumber phone;
cout<<"Enter phone number in the form (123)456-7890:\n";
cin>>phone;
cout <<"The phone number enter was:"<<phone<<endl;
return 0;
} |
|