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来自同一命名空间的其他类,但imports 仅在每个函数级别工作,并且在所有 AFAIK 中都不能在属性块中工作,因此它在这种特定情况下不起作用,并且可能比它更麻烦其他地方值得。

于 2013-03-17T22:03:57.683 回答