friend class잘 안돼네요.ㅡㅡ;;

asradad1의 이미지

friend class를 제대로 정의해준거 같은데..
왜 저런 error를 내는지 모르겠습니다.
소스코드 올립니다.
왜 저런 error를 내는 건지 어떻게 해야 다른 class의 function이나
member variable을 볼수 있는 것인지 좀 알려주세요!!

Quote:

[root@localhost monitor]# g++ -c Monitor.cpp
Monitor.cpp: In member function `int Condition::signal()':
Monitor.cpp:131: `next_count' undeclared (first use this function)
Monitor.cpp:131: (Each undeclared identifier is reported only once for each
function it appears in.)
Monitor.cpp:134: `next_wait' undeclared (first use this function)
Monitor.cpp: In member function `int Condition::wait()':
Monitor.cpp:145: `next_signal' undeclared (first use this function)
Monitor.cpp:147: `mutex_signal' undeclared (first use this function)
File attachments: 
첨부파일 크기
Package icon friend.zip1.7 KB
yui의 이미지

asradad1 wrote:
friend class를 제대로 정의해준거 같은데..
왜 저런 error를 내는지 모르겠습니다.
소스코드 올립니다.
왜 저런 error를 내는 건지 어떻게 해야 다른 class의 function이나
member variable을 볼수 있는 것인지 좀 알려주세요!!

Quote:

[root@localhost monitor]# g++ -c Monitor.cpp
Monitor.cpp: In member function `int Condition::signal()':
Monitor.cpp:131: `next_count' undeclared (first use this function)
Monitor.cpp:131: (Each undeclared identifier is reported only once for each
function it appears in.)
Monitor.cpp:134: `next_wait' undeclared (first use this function)
Monitor.cpp: In member function `int Condition::wait()':
Monitor.cpp:145: `next_signal' undeclared (first use this function)
Monitor.cpp:147: `mutex_signal' undeclared (first use this function)

우선 저야 시간이 많지만*_* 여기 계신 분들은 시간이 많지 않습니다.
질문할 때는 핵심 부분만 정리해서 올리는 것이 좋습니다. 압축 풀어가며
도와줄 분이 많지 않지요.

인스턴스가 없이 무턱대고 다른 클래스의 변수명을 부르는 것은 옳지 않습니다.
friend가 효과가 있는 것은 다음과 같은 경우입니다.

class Condition;
class Monitor {
  friend class Condition;
  int next_count;
};
class Condition {
  Monitor mon;
  void Something();
};

void Condition::Something()
{
  int k = mon.next_count;
}