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