문제

나는 많은 다른 어린이 클래스 객체를 타입산하고 하위 VI로 전달하는 기본 클래스 객체 배열이 있습니다. 배열에서 각 개별 요소의 원래 유형의 객체를 찾을 수있는 방법이 있습니까?

감사 ...

도움이 되었습니까?

해결책

후손을 위해, 이것은 크로스 포스트에 썼다 용암 포럼. LabView의 OO 기능 개발자 중 하나 인 Aristos 대기열은 다음과 같이 답변했습니다.

모든 클래스에서 동적 디스패치 방법을 사용하는 것은이를 처리하는 권장 방법이지만, 권장 사항은 귀하가하려는 모든 작업을 수행하는 메소드를 작성하는 것이 좋습니다. 나는 당신이 객체의 이름이나 ID를 반환하는 동적 디스패치 방법을 생각하고 있다고 생각합니다. "이것은"이것과 같습니까? 그렇습니다. 그러면이 클래스 여야합니다 ... "그리고 당신은 당신입니다. 해당 클래스라면 조치 X를 수행하십시오. 동적 디스패치 방법 ActionX.vi를 작성한 다음 적절하게 무시하면 성능을 저장하고 향후 코드 유지 보수에 훨씬 쉽게 시간을 보낼 수 있습니다.

또한보다 특정 노드를 사용하여 주어진 객체가 주어진 유형으로 다운 캐스트 될 수 있는지 테스트 할 수 있습니다. 이는 유형의 동등성 만 수행하는 이름 또는 ID 비교와 반대로 상속 테스트를 허용합니다. 보다 특정 노드가 오류를 반환하면 대상 유형이 아닙니다.

따라서 옵션은 (선호하는 순서)입니다.

  • 동작을 수행하는 동적 디스패치 방법
  • 유형 테스트를 수행하기 위해보다 구체적인 노드에
  • 객체 클래스의 이름/ID를 반환하는 동적 디스패치 방법
  • labview object.vi (labview 8.5에서 vi.lib로 배송되지만 Labview 8.6까지 팔레트에 추가되지는 않습니다).

다른 팁

Ni는 좋은 것을 가지고 있습니다 LVOOP의 개요 OO는 LabView의 고유 한 방식으로 구현되기 때문에 반드시 읽어야합니다.

당신은 '더 일반적인 수업에' 그리고 '보다 구체적인 수업에'응용 프로그램 제어 팔레트에서 기능?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top