我在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或我需要做什么才能将其他类实例作为成员变量?
答案 0 :(得分:0)
在Matlab中,您需要完全限定对命名空间中的类的引用,甚至来自同一命名空间中的其他类。像这样。
classdef class1
properties (Constant = true)
%in centipascals
p1 = namespace.class2(param1,param2);
end
end
您可以import
来自同一命名空间的其他类,但import
只能在每个功能级别工作,并且不能在所有AFAIK的属性块中工作,所以它不会在这个具体案例中工作,可能比其他地方更麻烦。