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;
}

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.