Вопрос

У меня есть массив объектов базового класса, в который я привел множество различных объектов дочерних классов и передаю его в sub vi.Есть ли способ узнать исходный тип объекта каждого отдельного элемента массива?

Спасибо ...

Это было полезно?

Решение

Для потомков это было перенесено на ЛАВА форумы.Пользователь Aristos Queue, один из разработчиков собственных объектно-ориентированных функций LabVIEW, ответил следующее:

Рекомендуемым способом решения этой проблемы является использование метода динамической отправки в каждом классе, хотя рекомендуется создать метод, который будет делать все, что вы пытаетесь сделать.Я предполагаю, что вы думаете о методе динамической отправки, который возвращает имя или идентификатор объекта, чтобы вы могли сказать: «Это равно этому?Хорошо, тогда это должен быть этот класс...», а затем вы выполняете Действие X, если это тот класс.Если вы напишете метод динамической диспетчеризации ActionX.vi, а затем соответствующим образом переопределите его, вы сэкономите на производительности и вам будет гораздо легче поддерживать код в будущем.

Вы также можете использовать узел Более конкретный, чтобы проверить, может ли данный объект быть приведен к заданному типу — это позволяет проводить тестирование наследования, а не сравнение имени или идентификатора, которое обеспечивает только эквивалентность типов.Если узел To More Special возвращает ошибку, значит, он не относится к типу назначения.

Итак, ваши варианты (в порядке предпочтения):

  • метод динамической отправки, который выполняет действие
  • Более конкретный узел для проведения типового тестирования
  • метод динамической отправки, который возвращает имя/идентификатор класса объекта
  • Получить путь к LabVIEW Object.vi (поставляется в vi.lib в LabVIEW 8.5, но не добавляется в палитры до версии LabVIEW 8.6)

Другие советы

у НИ хороший обзор ЛВООП это обязательно к прочтению, поскольку объектно-ориентированный подход реализован в LabVIEW уникальным способом.

Вы пробовали 'к более общему классу' и 'к более конкретному классу' функции на палитре управления приложением?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top