아래의 소스를 컴파일하면
error C2039: 'OutToday' : 'Time'의 멤버가 아닙니다.
'Time' 선언을 참조하십시오.
1>
라고 나오는데요
그런데 friend선언을 클래스에 하면
선언을 받은 클래스는 friend선언한 클래스의 모든 맴버에 접근할 수 있는 걸로 아는데
근데 왜 Time와 Date클래스에 서로의 클래스를 friend선언을 했는데
T.OutToday(T); 문장에서 'Time'의 멤버가 아니라고 나오나요?
클래스에 프랜드를 선언하면 상대편 클래스에서 맴버변수와 함수 전부 다 접근 가능한 것 아닌가요?
양 클래스에 프렌드 선언을 했는데 어째서 이런 에러가 나오는지 알고 싶네요.
#include <iostream>
#include <string.h>
class Time
{
friend class Date;
private:
int hour,min,sec;
public:
Time(int h,int m,int s)
{
hour=h;
min=m;
sec=s;
}
};
class Date
{
friend class Time;
private:
int year,month,day;
public:
Date(int y,int m,int d)
{
year=y;
month=m;
day=d;
}
void OutToday(Time &t)
{
printf("오늘은 %d년 %d월 %d일이며 지금 시간은 %d:%d:%d입니다.\n",year,month,day,t.hour,t.min,t.sec);
}
};
void main()
{
Date D(2005,01,22);
Time T(12,34,56);
T.OutToday(T);
}