1

私はC++の後にMATLABでOOPを学んでいます。クラス用に作成されたnumOfInstancesを取得する静的関数を作成しようとしています。また、1つのオブジェクトの変更は、他のオブジェクトの変更を反映する必要があります。以下は私のコードです:

classdef (Sealed) Student < handle

  properties (GetAccess = 'public', SetAccess = 'public')
    Name;
    ID;

  end


  methods (Access = private)
    function obj = Student

    end
  end

  methods (Static)
    function singleObj = getInstances
        persistent localObj;

        if isempty(localObj) || ~isvalid(localObj)
            localObj = Student;

        end
        singleObj = localObj;

    end
  end

  methods (Static)
    function count = getNumInstances

        persistent objCount;

        if isempty(objCount)
            objCount = 1;
        else
            objCount = objCount + 1;
        end
        count = objCount;

    end
  end
end
4

1 に答える 1

2

コンストラクター内のインスタンスの数をインクリメントする必要がありますが、これは現在実行していません。これが私がそれをするおおよその方法です

classdef cldef < handle
    methods (Static, Access = private)
        function oldValue = getOrIncrementCount(increment)
        % Private function to manage the counter
            persistent VALUE
            if isempty(VALUE)
                VALUE = 0;
            end
            oldValue = VALUE;
            if nargin > 0
                VALUE = VALUE + increment;
            end
        end
    end
    methods (Static)
        function value = getInstanceCount()
        % Public access to the counter cannot increment it
            value = cldef.getOrIncrementCount();
        end
    end
    methods
        function obj = cldef()
        % Increment the counter in the constructor
            cldef.getOrIncrementCount(1);
        end
    end
end
于 2013-03-26T07:15:38.463 に答える