- 把基地。米在你的路径和您的派生类继承基代替myBase。
- 改变基础的文件名。myBase m。m和myBase。在你的路径。
添加搜索路径之前classdef派生类
12个视图(30天)
显示旧的评论
%编辑:纠正失配.m-filename和类名的例子。我的坏!
我想构建一个派生类
derived.m
可以直接按“运行”-scipt按钮启动为例。然而,基类
base.m
位于一条路径,MATLAB在运行时是未知的。
%文件:pwd \ derived.m
classdef派生的<基地
方法
函数obj =派生()
%调用超类(基类)
obj = obj@base;
结束
结束
结束
%文件:D: \ notPwd \ base.m
classdef基地<处理
方法
函数obj =基础()
disp (“基本被称为“);
结束
结束
结束
通常,我会添加文件
base.m
到一个文件夹
+基地
在的目录
derived.m
,或叫
目录()
在脚本的开始。不幸的是,我无法用一个类做后者,因为之前不允许插入代码关键字
classdef
。
目录“D: \ notPwd”);% % %不允许派生的。m是a class defintion file, not a script !
classdef派生的<基地
% […]
另一个解决方案(至少我认为这将是):创建一个本地副本
pathdef.m
与路径
base.m
补充道。缺点是,我就会创建
pathdef.m
手动在控制台或辅助脚本,但一旦创建,MATLAB将加载本地文件默认的MATLAB目录。
目录“D: \ notPwd”);%步骤1:添加路径的基础。当前打开的搜索路径会话
savepath (fullfile (pwd,“pathdef.m”));pathdef %第二步:保存搜索路径。位于当前工作目录
MATLAB % % % % % %重开
myDerived.m;%步骤3:myBase.m运行。MATLAB使用本地pathdef。米,位于myBase。从添加搜索路径(“D: \…”)
不幸的是,这并不奏效,尽管MATLAB似乎选择正确的文件(即当地
pathdef.m
在启动时)。我检查,通过调用
这pathdef
在控制台。是的,指定的搜索路径是正确的。我做了一个测试运行
myDerived.m
后调用
目录()
和之前调用
savepath ()
。它工作得很好。
为什么上面不工作呢?
类定义解释之前的搜索路径加载(声明>定义)?有其他选择吗?我已经看了
类属性
希望能找到一个属性
路径
这将允许我(如特定的搜索路径定义。
classdef (path = ' D: \ notPwd ')
但什么也没发现。
0评论
接受的答案
史蒂文的主
2022年5月7日
你们班myBase书面文件的基础。m是
不
以MATLAB作为myBase。当类的名称或主要功能在文件与文件名不同,MATLAB知道它的
文件
的名字。你有两种选择:
另一个可能的选择,如果你不希望你的基类全局命名空间,将会把它放在一个包目录中。如果myBase。米在一个文件夹命名为+ myclass然后你将从myclasses.myBase继承。
一个派生类的基类
必须
容易接近的MATLAB时实例化派生类实例。没有时间让它(通过访问路径操作或类似的)在你告诉MATLAB开始建设类,但它实际上开始前。