[완료]cpp 공부중인데.. 도움좀 주세요.. 알고나면 간단할듯 한데.. 몰라서 너무 막막합니다...

xaeuiox의 이미지

안녕하세요
문제가 있는데,
공부가 부족한 터라 해결방법을 찾기가 난감합니다. 잘 못 찾겠습니다.
가벼운 귀뜸 좀 주십시요.

A.h 파일는 extend( ) 함수가 정의 되어있고,
B.h 파일에는 class Tree{ } 가 정의 되어있습니다.
B.h 파일에는 #include “A.h“ 이 정의되어있습니다.
class Tree의 메서드 중 일부가 extend( ) 함수를 사용합니다. ( 내용은 중요한 것이 아닙니다. )
 
여기서 문제는, ( 하고자 하는 바는 )
 
extend( ) 함수가 사용될 때 에 Tree의 오브젝트의 주소를 전달하여 tree의 멤버를 참조하고 싶습니다.
 
저의 발상이 무었이 문제입니까?
 
언뜻 생각하기에는 private 가 문제가 될 것 같습니다.
 
가벼운 생각으로 extend( ) 의 전달인자로 Tree * current 를 포함시켰는데
void extend ( Tree * current ) 
Tree가 정의가 안 돼서 안 된다고 하네요.. (  저의 수준을 알만하죠.. ㅡㅡ;; 브끄.. )
 
어떻게 해결할 수 있는 것인가요..?
무엇을 공부해야 하는 것입니까?? <- 이게 가장문제 입니다.

litdream의 이미지

Circular dependency problem?

http://en.wikipedia.org/wiki/Circular_dependency

삽질의 대마왕...

삽질의 대마왕...

lovemyin의 이미지

컴파일 에러가 나는 것은 당연합니다.
extend() 가 Tree Class를 모르고 있으니 에러가 나는 것입니다.
사용하실려면 당연히 include 해주셔야 하는데
이렇게 되면 서로 Dependency 가 생기게 되니 그리 좋은 모양은 아닌듯 합니다.
그래도 해야한다면 extend() 함수 구현부에서 Tree Class 헤더 파일을 참조해 주시고
Tree Class 멤버 함수에서 extend 함수 호출 시 this 포인터를 넘겨주세요.

/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/

/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/

xaeuiox의 이미지

감사합니다.
링크걸어 준것을 보다가 알았습니다.

A.h 파일에다가
extend() 의 원형 앞에 ..
class Tree;
라고 써주니 활용할 수가 있군요..

extend()의 소스가 들어있는 A.cpp 화일 안에
#include "B.h" 를 추가하니 되는 군요..

감사합니다.. 역시 간단한 것이 었군요.. 공부부족... ㅋㅋ 노력하겠습니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.