|
물론 제가 인스턴스 생성한건 아니구요.. (TComboBox::Items 멤버로 테스트한 것임)
그리고 TObject* 타입만 Assign할 수 있다는 님의 말은 맞지 않다고 생각합니다.
TStrings::Objects[]에 저장이 되는데 이것도 어짜피 변수일 뿐이고
VCL Class라고 하더라도 TStrings Class가 특별히 관리하는 것도 아닌
즉, 유저가 관리해야 하는 변수이지요.
TStrings::AddObject()에 대한 헬프에서 'Example'이 있는데
이것을 보면 TObject* 타입의 변수가 아닌 다른 값을 Assign해서
이용하는 예제가 나옵니다.
이 Q/A란에서도 이런 방법을 쓰는 것에 대한 얘기가 한 번
나온 적도 있는 것 같구요.
단, 제 처음 글에 있는 것과 같이 다른 값은 상관없는데
오직 -1만 지정을 못하는 것으로 봐서는 내부적으로 어떤
"관리"를 하는게 아닐까 하는 생각도 들기는 합니다.
그렇지만 아직도 빌더의 버그일 가능성이 높다고 생각합니다.
권대길.한꼬맹이 님이 쓰신 글 :
: 안녕하십니까?
:
: 한꼬맹이 입니다.
:
: 이상하네요...
:
: TStrings 추상클래스라서 인스턴스 생성할수 없을텐데요...
:
: 그렇다면 TStrings에서 상속받은 클래스라고 가정한다면...
:
: AddObject()메소드의 두번째인자에 들어가는 것은 TObject로 부터 상속받은 모든 클래스의 포인터 주소를
:
: 말합니다, 즉 VCL에서만 사용하는 모든 클래스가 해당되는 거죠.. 이것은 다시 컴퓨터 입장에서는
:
: 클래스의 메모리상의 시작주소를 뜻하는 거죠,,,
:
: 그렇니까 결론은 TObject로 상속받은 클래스의 포인터만 들어갈수 있다는겁니다..
:
: 그럼 참고하세요
:
|