Interface mit einer Methode aber verschiedenen Parameter
-
Hi,
hier das Beispiel in mehr oder weniger Pseudocode:Ich habe ein Interface IModule:
class IModule{ public: virtual void setParameter(/*parameter*/) = 0; virtual /*parameter*/ getParameter() = 0; }Jetzt habe ich zwei Klassen die von IModule erben sollen.
Hier die erste Klasse MyRect:class MyRect : IModule{ public: void setParameter(Rect rect); Rect getParameter(); }Und die zweite Klasse MyPoint
class MyPoint : IModule{ public: void setParameter(Point p); Point getParameter(); }So wird das ganze jetzt natürlich nicht funktionieren weil im Interface die Methoden festgelegt werden müssen. Und das ist auch der Punkt an dem ich hänge.
Ich bräuchte im Interface etwa so etwas:
class IModule{ public: virtual void setParameter(Parameter para) = 0; //eine Basisklasse Parameter virtual Parameter getParameter() = 0;//eine Basisklasse Parameter }Benutzen möchte ich das ganze so:
IModule modulA = new MyRect(); IModule modulB = new MyPoint(); Parameter p1 = new RectParameter(); Parameter p2 = new PointParameter(); modulA.setParameter(p1); modulB.setParameter(p2);Jemand ne Idee wie man sowas löst? Gibts irgendein Design Pattern das genau das behandelt?
Templates habe ich versucht, komme aber zu keinem grünen Zweig.Bin für jeden Tipp dankbar!!
Grüße
Denis
-
void*
PS: Sieht aber eher so als ob du ein Framework entwickelst. Als Rat: Entwickle keine Frameworks.
-
Welche Sprache soll das sein?
-
void* möchte ich gerne vermeiden

Sprache soll c++ sein.
Es soll kein Framework werden, aber es hat ähnlichlkeiten das stimmt.
Hier ein Beispiel, vielleicht Hilft es:Thema: Bildverarbeitung.
Aufgabe: Fahrzeug erkennung.Das ganze soll Modulbasiert aufgezogen werden
Input-> Vorverarbeitung -> Masking -> ROI Generierung -> Detection -> Output
Damit jedes Modul ähnlich ist und man jedes Modul mit jedem verknüpfen kann erbt jedes Modul von IModul. Soweit sogut.
Nur ist es jetzt so das die Module verschiedene Eingangsparameter brauchen. Es kann z.B. ein Bild sein, oder nur ein Pointoder eben ein Rect.Danke
Grüße
Denis
-
Benutzt man nicht genau dafür Templates?
-
Funktioniert nicht, da jeder Schritt in der Pipeline sehr verschieden von allen anderen ist. Sowohl in den Voraussetzungen als auch in den angeschlossenen Modulen. Habe lange ueber aehnliches nachgedacht, kam aber zu dem Schluss ... lohnt nicht. Weitere Probleme kann es geben, wenn Funktionen der IPP oder OpenCV integriert werden sollen.
Es soll kein Framework werden
Doch, genau das ist es.
-
sayezz schrieb:
Jetzt habe ich zwei Klassen die von IModule erben sollen.
Da liegt dein Denkfehler, die beiden Klassen haben offensichtlich eben doch nicht das selbe Interface und damit gibt es keinen Grund, aus dem sie von der selben Basis erben sollten...