|
list<CList_Class> *Value = new list<CList_Class>();
CList_Class *newValue = new CList_Class();
newValue->ValueT = 1;
Value->push_back(*newValue);
CList_Class *Tempv = &Value->back();
라고 쓰시든지,
list<CList_Class*> *Value = new list<CList_Class*>();
CList_Class *newValue = new CList_Class();
newValue->ValueT = 1;
Value->push_back(newValue);
CList_Class *Tempv = Value->back();
라고 쓰시든지...
list<CList_Class> Value;
CList_Class newValue;
newValue.ValueT = 1;
Value.push_back(newValue);
CList_Class Tempv = Value.back();
라고 쓰시든지요..
어쨌건, Value가 포인터형이고, 포인터는 곧 배열로 표현가능하기 때문에,
Value[0] 란 표현은 Value라는 리스트가 가진 0번째 데이타가 아닌, 포인터 변수 Value가 가리키는곳의 내용,
즉 list 자신이 됩니다. 이 부분은 연산자 오버로딩을 통해서 배열요소를 나타내는 꺽쇄를 함수로 정의할 때
주의해야 할 부분이기도 하구요.
그 배열요소를 제대로 오버로딩하기 위해선 해당 클래스가 포인터형으로 선언되어서는 안된다는 것이죠.
초보자 님이 쓰신 글 :
: 안녕하세요.. 계속 올리는거 같아.. 죄송합니다.
:
:
: list<CList_Class> *Value = new list<CList_Class>();
:
:
: CList_Class *newValue = new CList_Class();
: newValue->ValueT = 1;
:
:
: Value->push_back(const_cast<CList_Class &>(*newValue) );
:
:
: CList_Class *Tempv = &(reinterpret_cast<CList_Class &>(Value[0]));
:
: printf("%d\n", Tempv->ValueT); //값이 다르게 나오는데요..;;
:
: 혹시 알려주실수 있을까요... 정말 죄송합니다. 몰라서....
|