Vererbung, Abhängigkeiten und (keine) Zeiger



  • Ich hab ein Problem mit Abhängigkeiten, d. h. ich hab das Problem nur mit C++, denn eine gleichwertige Implementierung in C# hab ich bereits. Es ist schwer zu erklären, aber wie würde folgender Code in C++ aussehen ? Mit Vorausdeklaration erreicht man nur die möglichkeit einen Zeiger auf Datentyp X anzulegen, aber nicht direkt eine Variable davon...

    interface foo_1
    {
    	bar Bar();
    }
    
    interface foo_2 : foo_1
    {
    }
    
    class bar : foo_1
    {
    	public bar Bar()
    	{
    		//...
    	}
    	public baz m_Sz;
    }
    
    struct baz : foo_2
    {
    	public bar Bar()
    	{
    		//...
    	}
    }
    

    Das Problem ist bei struct baz in class bar. Ist eine solche Konstruktion möglichm und wenn ja wie ?



  • Was bedeutet interface? Ist das so 'ne Art abstrakte Klasse?

    class foo_1
    {
    public:
        virtual bar Bar() = 0;
    };
    
    class foo_2
        : public foo_1
    {
    };
    
    class bar
        : public foo_1
    {
    public:
        baz m_Sz; // wieso public ?
        bar Bar()
        {
            //...
        }
    };
    
    class baz
        : public foo_2
    {
    public:
        bar Bar()
        {
            //...
        }
    };
    

    Keine Ahnung ob das jetzt ein C# Äquivalent ist, aber es wäre auf jedenfall mein Tipp.
    Allerdings wirst du mit dem Code Probleme bekommen, da du in bar baz benutzt, wo baz aber noch nicht bekannt ist. Ähnliche Probleme gibts auch mit foo_1 und foo_2. In einigen Fällen kann man sowas mit Vorwärtsdeklarationen lösen. In deinem Beispiel seh ich da aber momentan keine Möglichkeit, naja ist auch schon spät. Vielleicht solltest du dir aber auch über dein Design nochmals Gedanken machen.


Anmelden zum Antworten