Probleme bei Vererbung (virtual)



  • Hallo Community,

    Ich habe drei zusammengehörige Klassen 'MLobj' 'MLtext' und 'MLVerify'.
    Die Klasse 'MLobj' ist abstrakt und erbt die Klasse 'MLVerify'. 'MLtext' erbt virtual von 'MLobj'.

    Ich erstelle nun drei weitere zusammengehörige Klassen 'HTobj' 'HTtext' und 'HTVerify', welche folgendes Vererbungsmuster aufweisen:
    HTobj erbt virtual von MLobj und von 'HTVerify'. 'HTText' wiederum von 'HTobj' und von 'MLtext'. Und die Klasse 'HTVerify' von 'MLVerify'.

    Hier anbei gleich mal die Header dieser Dateien. Habe Diese mal in einem Text zusammengefasst.

    // Headerfile 'MLobj'
    #ifndef __mlobj__
    #define __mlobj__
    
    // Header
    #include <wx/wx.h>
    #include "MLVerify.h"
    
    class MLobj : public MLVerify
    {
    protected:
    	wxString MLobj_variable;
    
    public:
    	/* c'tor */
    	MLobj();
    	MLobj(const wxString& Type);
    
    	// ** Ausgabe **
    	virtual wxString TextGet() const = 0;
    };
    #endif //__mlobj__
    // ***********************************************
    
    // Headerfile 'MLtext'
    #ifndef __mltext__
    #define __mltext__
    
    // Header
    #include <wx/wx.h>
    #include "MLobj.h"
    
    class MLText : virtual public MLobj
    {
    protected:
    	wxString inText;
    
    public:
    	MLText();
    	MLText(const wxString& text);
    
    	// überschrieben aus Mutter MLobj
    	// ** Ausgabe **
    	wxString MLGet() const;
    	wxString MLArtGet() const;
    };
    #endif //__mltext__
    // ***********************************************
    
    // Headerfile 'MLVerify'
    #ifndef __mlverify__
    #define __mlverify__
    
    // Header
    #include <wx/wx.h>
    
    class MLVerify
    {
    public:
    	// Die VerifyFunk
    	virtual wxString Verify(wxString name) const;
    };
    #endif // __mlverify__
    // ***********************************************
    
    // Header 'HTobj'
    fndef __htobj__
    #define __htobj__
    
    // Header
    #include <wx/wx.h>
    #include "MLobj.h"
    #include "HTVerify.h"
    
    class HTobj : virtual public MLobj, public HTVerify
    {
    public:
    	/* c'tor */
    	// Standard
    	HTobj();
    	// Mit Angabe des Typen
    	HTobj(const wxString& newType);
    
    	/* usings */
    	using HTVerify::Verify;
    };
    #endif // __htobj__
    // ***********************************************
    
    // Headerfile 'HTtext'
    #ifndef __httext__
    #define __httext__
    
    // Header
    #include <wx/wx.h>
    #include "HTobj.h"
    #include "MLtext.h"
    
    class HTtext : virtual public HTobj, public MLText
    {
    protected:
    	wxString inText;
    public:
    	/* c'tor */
    	// Standard
    	HTtext();
    	// Übergabe des Inhalts
    	HTtext(const wxString& SetText);
    };
    #endif // __httext__
    // ***********************************************
    
    // Headerfile 'HTVerify'
    #ifndef __htverify__
    #define __htverify__
    
    // Header
    #include <wx/wx.h>
    #include "MLVerify.h"
    
    class HTVerify : public MLVerify
    {
    public:
    	// Die VerifyFunk
    	virtual wxString Verify(wxString name) const;
    
    };
    #endif // __htverify__
    // ***********************************************
    

    Das Problem dabei ist wenn ich 'HTtext' Object erzeuge und rufe 'TextGet()' auf
    wird die Verify-Funktion der Klasse 'MLverify' aufgerufen, obwohl ich eigentlich erreichen möchte das die Verify-Funktion der Klasse 'HTverify' aufgerufen wird. Dachte das sollte mit dem 'using-Befehl' in 'HTobj' klappen.

    Was mache ich falsch, oder ist dies auf diesem wege gar nicht möglich !??



  • Dieser Thread wurde von Moderator/in Martin Richter aus dem Forum MFC (Visual C++) in das Forum C++ (auch C++0x) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten