2016-03-22 10 views
2

Ich denke, das Beispiel ist ziemlich selbsterklärend. Ich möchte einen Klassennamen oder "Beispiel" als Parameter geben und dann einige Instanzen davon mit e1 und e2 als Konstruktorargumente erstellen. Das Beispiel könnte auch ein wenig anders aussehen, der entscheidende Punkt ist: Wie kann ich eine Instanz einer Klasse erstellen, die 'nach Namen' oder 'nach Beispielinstanz' angegeben wird?Wie man etwas in eine gegebene Klasse in Matlab einwickelt

function h = wrap_and_do(name_or_empty_instance_of_wrapper_class, e1, e2) 
    w1 = instantiate a comparator class with argument e1 
    w2 = instantiate a comparator class with argument e2 
    h = do_something(w1, w2); 
end 

In C++, könnte man Vorlagen oder eine Factory-Methode verwenden. Es gibt keine Vorlagen in Matlab und ich möchte Factory-Methoden vermeiden, da ich es für alle möglichen Wrapper-Klassen implementieren müsste.

Antwort

3

Ich empfehle keine Strings zu verwenden, anstatt eine Funktion Griff an den Konstruktor verwenden:

function h = wrap_and_do(constructor, e1, e2) 
    w1 = constructor(e1) 
    w2 = constructor(e2) 
    h = do_something(w1, w2); 
end 

Aufruf über:

wrap_and_do(@MyExampleClass,1,2) 

Wenn Sie Zeichenfolgen verwenden müssen, verwenden Sie str2func

Verwandte Themen