如何在matlab中覆盖一个对象?

时间:2016-01-28 14:46:14

标签: java matlab oop

我有一个循环,我想在其中创建一个对象。它必须为每个循环共享相同的名称。像

for i=1:100
car=car(args(i))
%in this loop do stuff with car
end

问题是在第二次迭代时,matlab尝试访问元素car(args(i)),而不是调用类car的costructor。

这是arg = SS

的错误
Error using subsindex
Function 'subsindex' is not defined for values of class 'SS'.

在java中,我只需要调用''new''参数,比如

 car=new car(args);
 //do stuff with the car istance
 car= new car(args);
 //do stuff with the new car istance

我无法分配''car''数组,因为每个数据都是几百兆字节。我尝试在matlab中寻找类似于new的关键字,但我没有运气。

2 个答案:

答案 0 :(得分:6)

问题在于,您调用的变量与您的类名称相同。第一次定义car=car();时,car开始引用一个实例,而不是类,后来对car()的调用将不会调用类构造函数,但会尝试访问您的对象的索引car(就好像它是一个数组,因此错误为subsindex)。

你总是要小心MATLAB 而不是来遮蔽内置函数名,或者在这种情况下是类名。在Java中,使用方括号访问数组(我猜?),所以没有歧义。

因此,请勿使用car作为类car实例的名称。改为称呼mycar=car(args(i))

答案 1 :(得分:1)

尝试在每次迭代结束时从工作空间中删除汽车实例:

clear car
相关问题