Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations KootK on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

How to create array of user objects?

Status
Not open for further replies.

belliott4488

Aerospace
Apr 30, 2007
2
I've created a fairly simple class and can instantiate and work with objects of the class. Now someone has asked for the ability to create arrays of objects, which I thought would be straight-forward, but I'm getting errors from the subsref.m function.

I don't even understand why subsref is being called. I'm attempting to create an array as follows:

obj1 = myClass(args);
obj2 = myClass(args);
objArray = [obj1,obj2];

If I then ask for objArray(1), I get subsref errors, apparently because the objArray is of type myClass.

I thought subsref was for handling index references INTO an object, e.g. obj1(1), which might well return a value of a different type, whereas this is a case where I want to index into an array and get a myClass object as a return value.

What am I misunderstanding? Is there a way to assign objArray = [obj1,obj2];?

thanks,
Bruce
 
Replies continue below

Recommended for you

I found that my problem came from my having created stub member functions overriding the built-in subsref.m and subsasgn.m functions. I did this just to print meaningful warning messages to the screen, since I had thought that Matlab would fail with no helpful error messages otherwise.

It turns out that if I just leave these functions out all together -- which I could easily do since they were doing nothing useful -- then Matlab calls the built-in versions, and everything works fine.

I hope this will be helpful to someone.

- Bruce
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor