Code Bye

这个友元函数为什么不能访问私有成员

#include<iostream>
using namespace std;
class date{
	public:
	    friend void print();
		date(){
			day=1;
			month=2;
			year=3;
		}
		~date(){
			cout<<"bye";
		}
		int setdate(int x,int y, int z){
			day=x;
			month=y;
			year=z;
		}
	private:
		int day,month,year;
};
void print(){
	cout<<day<<month<<year<<endl;
}
int main(){
	date a;
	print();
	a.setdate(5,8,9);
	print();
}
解决方案

40

你好歹也传个对象给print当参数,不然怎么打印?
#include<iostream>
using namespace std;
class date{
	public:
	    friend void print(date &a);
		date(){
			day=1;
			month=2;
			year=3;
		}
		~date(){
			cout<<"bye";
		}
		void setdate(int x,int y, int z){
			day=x;
			month=y;
			year=z;
		}
	private:
		int day,month,year;
};
void print(date &a){
	cout<<a.day<<a.month<<a.year<<endl;
}
int main(){
	date a;
	print(a);
	a.setdate(5,8,9);
	print(a);
}

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明这个友元函数为什么不能访问私有成员