您的位置:首页 > 编程语言 > C语言/C++

VC++6.0中利用友元函数进行重载时出现不能访问私有成员的解决办法

2013-12-14 17:10 453 查看
问题代码:

#include <iostream>
using namespace std;

class PhoneNumber{
private:
char areaCode[4];
char exchange[4];
char line[9];
public :
friend istream& operator >>(istream &,PhoneNumber &);
friend ostream& operator <<(ostream &,PhoneNumber &);
};

istream& operator >>(istream & input,PhoneNumber &p){
input.getline(p.areaCode,4,' ');
//input.ignore();
input.getline(p.exchange,4,' ');
//input.ignore();
input.getline(p.line,9);
return input;
}

ostream& operator <<(ostream& output,PhoneNumber& p){
output<<"("<<p.areaCode<<")"<<"  "<<p.exchange<<"-"<<p.line<<endl;
return output;
}

int main(){
PhoneNumber p;
cin>>p;
cout<<p;

return 0;
}


在vc6.0中,出现如下的错误提示:



解决办法:

#include <iostream>
//using namespace std;  //在VC6.0中运行出错

class PhoneNumber{
private:
char areaCode[4];
char exchange[4];
char line[9];
public :
friend std::istream& operator >>(std::istream &,PhoneNumber &);
friend std::ostream& operator <<(std::ostream &,PhoneNumber &);
};

std::istream& operator >>(std::istream & input,PhoneNumber &p){
input.getline(p.areaCode,4,' ');
//input.ignore();
input.getline(p.exchange,4,' ');
//input.ignore();
input.getline(p.line,9);
return input;
}

std::ostream& operator <<(std::ostream& output,PhoneNumber& p){
output<<"("<<p.areaCode<<")"<<"  "<<p.exchange<<"-"<<p.line<<std::endl;
return output;
}

int main(){
PhoneNumber p;
std::cin>>p;
std::cout<<p;
return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐