3

次のディレクトリ構造を持つ matlab にプロジェクトがあります。

+namespace\
    @class1\
        class1.m
    @class2\
        class2.m
mainfile.m

class1.m には次のようなものがあります

classdef class1

    %readonly variables
    properties(GetAccess = 'public',SetAccess = 'private')
        forename;
        lastname;
        middlename;

    end

    properties(Constant = true)

        %in centipascals
        p1 = class2(param1,param2); %this is the part I need to work

    end

    methods(Access = public)

        function this = class1(fname,lname,mname)

            this.forename = fname;
            this.lastname = lname;
            this.middlename = mname;

        end
    end
end

このクラスを機能させることができないようです。Class1 は class2 のコンストラクターを認識しません (おそらく何かが正しくインポートされていないためです)。class2 をインポートするにはどうすればよいですか? または、他のクラス インスタンスをメンバ変数として持つにはどうすればよいですか?

4

1 に答える 1

0

Matlab では、同じ名前空間内の他のクラスからであっても、名前空間内のクラスへの参照を完全に修飾する必要があります。このような。

classdef class1
    properties (Constant = true)
        %in centipascals
        p1 = namespace.class2(param1,param2);
    end
end

import同じ名前空間から他のクラスを作成できますがimport、関数ごとのレベルでのみ機能し、プロパティ ブロックではまったく機能しないため、この特定のケースでは機能せず、それよりも問題が発生する可能性があります他の場所で価値があります。

于 2013-03-17T22:03:57.683 に答える