Entwurfsmuster Beobachter: TTreeNodesBeobachter
-
Hallo,
ich möchte einen TreeView durch ein Beobachter Entwurfsmuster auf dem laufenden halten. TSubprocess soll noch einige Eigenschaften mehr als die in TTreeNodes implementierten enthalten.class TSubprocess: public TTreeNodes,public Beobachter
{
}Beobachter ist hierbei die Klasse aus dem bekannten Entwurfsmuster und TSubprocess wäre dann der konreteBeobachter
leider schreit der Compiler dabei rum
[C++ Fehler] UModComponents.h(78): E2246 Beobachter ist keine abstrakte, public, einzelne Vererbungs-Klassenhierarchie ohne Datenin der Hilfe steht dann
Interner Fehler. In manchen Fällen erzwingt der Compiler Einschränkungen für eine Klassenhierarchie. In diesem Fall besteht die Einschränkung darin, daß alle Klassen abstrakte Klassen sind und nur eine übergeordnete Klasse haben.welchen Weg gibt es um die Mehrfachvererbung drumrum oder wie kann ich die Vererbung doch noch durchdrücken?
-
Hallo Sprotti,
Mehrfachvererbung und VCL sind kein gutes Thema, dass liegt an Delphi, da hier nur Interfaces mehrfachvererbt werden können. Das ist eine der gravierensten Einschränkungen dieses Frameworks (und diejenigen die glauben, Mehrfachvererbung ist auch nicht wichtig, irren).
Nimm ein Datenelement TreeNodes* in Deiner Klasse "TSubprocess" auf und erzeuge ein TreeNodes- Objekt im Konstruktor. Übernehm die Methoden, die Dich interessieren in das Protokoll Deiner Klasse "TSubprocess" und verwende für die Implementierung den Zeiger. Dann wird sich das ganze wie ein Beobachter verhalten, ansonsten andersherum.
Schöne Grüsse aus Berlin
Volker