Несколько полей определенного класса в другом классе - PullRequest
0 голосов
/ 13 мая 2018

Я занимаюсь разработкой объектно-ориентированной программы на MATLAB.У меня есть класс с именем MyNode и класс с именем MyService, как вы видите здесь:

classdef MyService
     % ......

end

classdef MyNode        
    properties
        MyNode     % List of neighbor Nodes

        MyService  % List of services that I request
        MyService  % List of services that I provide
    end

end

Я хочу, чтобы класс MyNode имел два экземпляра MyService class, но я также хочу иметь список MyNode объектов в его определении.Я знаю, что этот код неверен в MATLAB.Как я могу это сделать?

1 Ответ

0 голосов
/ 13 мая 2018

Вы путаете свойство names со свойством спецификации класса (которые не требуются в MATLAB).В коде, который вы написали, вы получите поля с именем из MyNode и MyService, что позволит MATLAB предположить, каким должен быть тип данных (вероятно, double при неинициализированном, а не то, что вы хотели).

Чтобы это исправить, прочитайте страницу документации по проверке значений свойств .Вы обнаружите, что способ указания класса для свойств / полей осуществляется с использованием следующего синтаксиса: enter image description here

В вашем случае это может выглядеть следующим образомthis:

classdef MyNode        
    properties
        neighbors(:,1) MyNode    % List of neighbor Nodes
%       ^ name    ^ size   ^ class
        rService(1,1) MyService  % List of services that I request
        pService(1,1) MyService  % List of services that I provide
    end    
end

Я бы также посоветовал добавить к вашим классам несколько конструкторов .

Наконец, я хотел бы отметить, что я протестировал приведенное выше определение рекурсивного классав R2018a.Если ваша версия MATLAB довольно старая (до R2016a), вы можете использовать только синтаксис, упомянутый здесь , примерно:

<varName>@<class> <scalar/vector/matrix> = <initial value>;
...