Mehrfachvererbung einer Klasse in die selbe andere Klasse usw....
-
ja das schon, so hatt ich's auch schon nur dann muss ich ja in Mischer drin
Auf=new TRelais(......);
haben und das will ich in der Klasse vermeiden.Oder geht es auch ohne dass ich in Mischer ein new TRelais mache???
-
Wieso willst du deine TRelais-Variablen unbedingt dynamisch erstellen.
EinfachTRelais rel1, rel2;. Die Initialisierung dann im Konstruktor von TMischer oder über Memberfunktionen.
-
Weil ich jetzt noch nicht genau weis wie viele Mischer letztendlich im Projekt sind, deshalb will ich das ganze so dynamisch wie möglich haben.
-
Du hast aber oben geschrieben, dass ein TMischer zwei TRelais enthält. Die Anzahl der TMischer-Instanzen spielt doch da keine Rolle. Hier kannst du dann ja immernoch mit new arbeiten (oder std::vector).
-
in der Code.cpp steht:
[cpp] char* cMText[VARIABLES]={"°C Sollwert bei T8", "", "", "", "", "", "", "Sekunden Mischerlaufzeit für 90°", "", "", "Zwangsstellung Auf", "", "", ""}; float fMValue[VALUES]={20,0,0,0,0,0,0,140,0,0}; bool bMSwitch[SWITCHES]={false, false, false, false}; Auf=new TRelais("M1-Auf", "öffnet den Mischer",cMText, fMValue, bMSwitch, 0, 15); Zu=new TRelais("M1-Zu", "schließt den Mischer",cMText, fMValue, bMSwitch, 0, 16); Mischer=new TMischer(Auf, Zu); [/cpp]in der TMischer steht:
[cpp] TMischer::TMischer(TRelais* Auf, TRelais* Zu){ Opn=Auf; Cls=Zu; } [/cpp]
-
Braunstein schrieb:
Du hast aber oben geschrieben, dass ein TMischer zwei TRelais enthält. Die Anzahl der TMischer-Instanzen spielt doch da keine Rolle. Hier kannst du dann ja immernoch mit new arbeiten (oder std::vector).
Das schon nur weiß ich nicht ob die Relais die dann im Mischer sind die gleiche VariableList usw. haben und so, wie ich 's nun hab müsste es doch eigentlich passen oda????
Denn nun kann ich für jedes TMischer Element die TRelais variabel erstellen so wie ich's brauch.
-
...und wieso nochmal erstellst du die Relais nicht einfach im Konstruktor?
-
weil ich dann einen Namen, die ganzen Zustände wann was wie geschaltet wird, den default Wert usw. in der Klasse habe und ich das vermeiden möchte. Da ich diese Klasse für später auch verwenden will und nicht jedesmal die VariableList angleichen will (die übrigends nie gleich ist)
-
Aber sauber wäre doch da dem Mischer mitzuteilen, was geschaltet wird und der teilt es dann den entsprechenden relais mit?
-
junix schrieb:
Aber sauber wäre doch da dem Mischer mitzuteilen, was geschaltet wird und der teilt es dann den entsprechenden relais mit?
das mach ich doch jetzt eh, indem ich mir in der Code meine beliebigen Relais definiere und dann ruf ich die TMischer::Control auf und die sagt dann welches Relais wann geschaltet wird. Oder versteh ich jetzt etwas nicht richtig???
-
Es gibt 2 Betrachtungsweisen. Zum Einen der Design aus Applikationssicht (also dem Teil Software der den Mischer verwendet) zum Anderen der Design innerhalb des Mischers.
Ich hatte nun den Gedanken gehegt, das die Applikation nur den Mischer sieht und der Mischer von der Applikation die Ziele zugewiesen bekommt, was er zu mischen hat. Der Mischer selbst gibt dann diese Informationen an das Relais oder ggf. eben auch ein anderes Objekt weiter.
-
wenn ich deine Betrachtungsweise richtig versteh, dann war das genau so wie ich's ursprünglich hatte.
Ich wollte es nun aber anders haben, denn die Relais werden auch noch von anderen verwendet, da auch Pumpen usw. im Programm sind die nur 1 Relais benötigen.
Deshalb wars mir lieber wenn ich die Relais erstelle und dann an den Mischer weitergebe.
-
Aber es werden doch nicht die selben Relais verwendet?
-
nein das nicht, aber für mehrere Mischer gibt es je Mischer 2 Relais und für jedes Relais gibt es eine vom Mischer bereitgestellte VariableList, welche ich ja irgendwo mal initialisieren muss und da hab ich nun die Relais eben in die Code.cpp gepackt und ruf nun auch dort die TMischer::Control auf. Funkt eigentlich ganz gut so, zumindest bis jetzt.
Warum, auf was willst du hinaus??
-
Das die Relais ja nur von einem Mischer verwendet werden und daher keine Veranlassung besteht, das der rest der Applikation die Relais die hinter dem Mischer stecken kennt?
-
junix schrieb:
Das die Relais ja nur von einem Mischer verwendet werden und daher keine Veranlassung besteht, das der rest der Applikation die Relais die hinter dem Mischer stecken kennt?
Die muss er aber kennen, denn und das kannst du nicht wissen, auch die Belegung der Relais auf einer der 5 Platinen ist variabel und deshalb muss ich wissen wo die Relais für den Mischer sind und dass sie da sind
-
Aha ok. da dämmert mir einiges (o;
-
ok, das heißt also dass es doch so passt wie ich's hab oder????
sorry das ich das vorher nicht erwähnt hab :p
Danke aber trotzdem für die Hilfe...
mfg
Tom
-
Jo, ist eine mögliche Lösung (o:
Wozu sind eigentlich die leerstellen in deinem "cMText"?
-
cMText ist einer VariableList zugeordnet, mit Einheit, Wert und Beschreibung. die leeren Werte sind einfach Felder die momentan nicht gebraucht werden, zumindest noch nicht.