How to pass a class name as argument to a function
Afficher commentaires plus anciens
Hello,
I'd like to initialize an element of a class with another class instance, and I'd like to pass in the particular class as an object. For example:
classdef Aclass < handle
properties
thingObj
end
methods
function this = Aclass(thingClassName)
this.thingObj = thingClassName(arg1,arg2,etc);
end
end
end
This code doesn't work, though ("Index exceeds matrix dimensions"). I assume the problem is you can't call the () operator on an existing object.
Instead, I do this, which does work, but isn't pretty:
classdef SomeClass < handle
properties
thingObj
end
methods
function this = SomeClass(thingClassName)
this.thingObj = eval([class(thingClassName) '(arg1,arg2,etc)']);
end
end
end
There's no checking in the string argument list, and errors in this line are hard to debug.
I could instantiate the object outside the constructor, but that's problematic. I'd like to instantiate the object within the "SomeClass" constructor because it knows the right way to do it.
I'm guessing this is really simple and that I haven't stumbled on the right way yet. Any ideas?
Thanks,
Charles
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Data Type Identification dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

