struct containing self type pointer <div>how to work struct including self type pointer </div> <div>영어 단어도 부실해서 검색도 잘 못했지만요 ㅠㅠ </div> <div><br></div> <div><br></div> <div><br></div> <div>class T {</div> <div>public:</div> <div>T* pT;</div> <div>int data;</div> <div>}</div> <div><br></div> <div><div><br></div> <div>이게 어떻게 가능한지가 궁금합니다. </div></div> <div><br></div> <div>T*는 T가 구현된 후에 구현될 수 있는 것 아닌가요? </div> <div><br></div> <div><span style="font-size:9pt;line-height:1.5;">일단 포인터의 크기는 가리키는 타입과 무관하게 일정하기 때문에 전체 크기와 나머지 변수의 상대적 주소값이나 타입을 결정하는 데 문제가 없다고는 배웠는데... </span></div> <div><br></div> <div>근데 아무리 그래도 이해가 안가는 점이 있습니다. </div> <div><br></div> <div>포인터에는 주소값 뿐만 아니라 가리키는 대상의 구조(?)에 대한 정보도 함께 있어야 하는 것 아닙니까? </div> <div><br></div> <div>class A {</div> <div>public:</div> <div>int a;</div> <div>int b;</div> <div>double d;</div> <div>}</div> <div><br></div> <div><br></div> <div>가 있다면 </div> <div>A* pA; </div> <div>는 (*pA).b 와 같이 식별자에 따라 정확히 그것을 타입을 알고 가져와주는 게 가능하지 않습니까.</div> <div><br></div> <div><br></div> <div>그러니까 만약 위의 class T를 예로 들자면 </div> <div><br></div> <div>T* 가 만들어지기 위해서는 T 내부의 모든 타입이 결정되어야 하죠. </div> <div><br></div> <div>근데 T 내부에 T*는 T가 만들어지기 전에는 결정날 수 없는 타입 아닙니까? </div> <div><br></div> <div><br></div> <div><br></div> <div><br></div> <div>내부적으로는</div> <div><br></div> <div>class T {</div> <div>public:</div> <div>void* pT;</div> <div>int typeOfPT;</div> <div>int data;</div> <div>}</div> <div><br></div> <div>와 같이 구현되어있고 </div> <div><br></div> <div>컴파일러에 모든 포인터를 관리하는 관리자가 있어서 </div> <div><br></div> <div>T t;</div> <div><br></div> <div>t.pT 를 사용하면</div> <div><br></div> <div>typeOfPT 값에 따라 자동으로 T*로 캐스트해주는 겁니까? </div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.