2011-12-14 2 views
0

저는 IDL에 비교적 익숙합니다. 그래서 내가하고 싶은 것이 실제로는 아주 사소한 것 같습니다!알 수없는 크기의 배열을 가진 IDL 클래스를 멤버 변수로 정의하기

몇 가지 멤버 변수를 사용하여 클래스를 만듭니다. 이것들 중 두 개는 수레 일뿐입니다. 그러나 세 번째는 알 수없는 크기의 3 차원 배열이되고 싶습니다. (음 .. 사실 3 차원의 크기는 12입니다.하지만 그게 전부입니다!). 어떻게 이것을 클래스 정의에서 선언 할 수 있습니까 아니면 불가능합니까? 어쩌면 비 배열 데이터 구조로 작업해야 할 필요가 있습니다.? 여기

지금까지 내 코드입니다 :

pro field__define 
    void={field, lat_res: 0.0, long_res: 0.0, values: ?!?!?!?!} 
    return 
end 

답변

2

당신은 같은 포인터를 사용하려면 : 그런데

pro field__define 
    void = { field, lat_res: 0.0, long_res: 0.0, values: ptr_new() } 
end 

, 정의, 실행 돌아에서 RETURN에 대한 필요가 없습니다 END 성명을 때.

실제로 포인터를 만들지는 않으며 포인터의 공간을 절약합니다. 마지막으로 당신이 때 힙을 정리하는 것을 잊지 마세요

help, *self.values 

: 다음

self.values = ptr_new(fltarr(3, 4, 5)) 

같은 값을 사용 : 당신이 필드를 사용하려는 경우, 당신은 같은 것을 할 필요가있을 것이다 와 배열을 수행 :

ptr_free, self.values 

그것은이 같은 주제에 대한 책을 얻을 좋을 것를 통해 몇 가지 예를 다음과 같은 것이 도움을 줄 수 있다는 사항이 많이 있습니다.

0

해시를 사용하여 클래스의 멤버 변수를 나타내는 대체 기술은 here입니다. IDL에서 포인터를 사용하는 것보다 해시로 작업하는 것이 더 쉽다는 장점이 있지만 IDL 버전 8 이상을 실행해야합니다.