在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
c++,vc6.0,中友元函数,无法访问私有字段(private)的问题(problem),cannot access private member declared in class 'Date' 代码如下: #ifndef _DATE_H_ #define _DATE_H_ #include<iostream> using namespace std; class Date { public: Date(); Date(int y,int m,int d); void printOn(); private: int _year; int _mounth; int _day; friend const ostream& operator<<(ostream & out,Date d); }; Date::Date():_year(0),_mounth(0),_day(0) {} Date::Date(int y,int m,int d):_year(y),_mounth(m),_day(d) { } void Date::printOn() { cout<<*this; } const ostream& operator<<(ostream & out,Date d) { out<<d._year<<d._mounth<<d._day<<endl; return out; } #endif 错误提示如下图: 据说是VC的一个经典BUG。和namespace也有关. 只要含有using namespace std; 就会提示友员函数没有访问私有成员的权限。 解决方法:去掉using namespace std;换成更小的名字空间。 例如: 更正后如下: #ifndef _DATE_H_ #define _DATE_H_ #include<iostream> //using namespace std; using std::cin; using std::endl; using std::cout; using std::ostream; using std::istream; class Date { public: Date(); Date(int y,int m,int d); void printOn(); private: int _year; int _mounth; int _day; friend const ostream& operator<<(ostream & out,Date d); }; Date::Date():_year(0),_mounth(0),_day(0) {} Date::Date(int y,int m,int d):_year(y),_mounth(m),_day(d) { } void Date::printOn() { cout<<*this; } const ostream& operator<<(ostream & out,Date d) { out<<d._year<<d._mounth<<d._day<<endl; return out; } #endif
或者更改如下: #include<iostream.h> |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论