How can I create an inherit class based on variable value?
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Chung-Tao Chou
le 20 Fév 2023
Modifié(e) : chrisw23
le 20 Fév 2023
Hi,
I've defined multiple classes (class1, class2, class3...) which all inherit from one class (class0):
classdef class0 ...
classdef class1 < class0 ...
classdef class2 < class0 ...
classdef class3 < class0 ...
and I have a variable 'index', which is 1 or 2 or 3. I'm trying to create a object whose class type is based on this index. For example, if index is 1, I want a object of class1. So far I can acheive this by calling a function like in the following code:
function test = create_class_obj(index)
switch index
case 1
test = class1();
case 2
test = class2();
case 3
test = class3();
end
end
Is there an elegant way to encode this into the constructor of class0? So that I can do the following:
test = class0(index);
Thanks.
Josh
0 commentaires
Réponse acceptée
Steven Lord
le 20 Fév 2023
You could create a function handle to the constructor then call that function handle.
index = 2; % example
fh = str2func("class" + index)
fh()
You'd probably want to check (either before creating the function handle or while calling it, using try and catch) that the class you're trying to instantiate exists.
But I would not put this into the constructor of class0. I would instead make a factory function or method that creates the appropriate subclass object.
function class0()
disp("Inside class0")
end
function class1()
disp("Inside class1")
end
function class2()
disp("Inside class2")
end
function class3()
disp("Inside class3")
end
1 commentaire
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur Extend Testing Frameworks dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!