Designfrage: Was haltet ihr von meiner Idee?



  • Ich wollte zu meinem Framework PlugIns ermöglichen. Diese definieren Subklasssen, der Klassen des Frameworks, womit wiederum andere Klassen des Frameworks arbeiten. Ich musste meinen Klassen also sagen, sie sollten ein Objekt eines Types herstellen, dass sie gar nicht kannten. Hier ist meine Idee:

    class TypeNameBase
    	{
    	public:
    		class T;
    	};
    
    	template<class T> class TypeName : public TypeNameBase
    	{
    	public:
    		typedef TypeName T;
    	};
    

    Erstmal:
    Ist das Standardgetreu?
    Jetzt kann ich einen TypeNameBasePointer speichern und diesen dann auf einen TypeName setzen. dann sag ich return new Pointer::T.

    thx für eure (konstruktive) Kritik.



  • dann sag ich return new Pointer::T.
    

    versteh ich nicht, ich seh da keine klasse pointer-.-

    template<class T> class TypeName : public TypeNameBase
        {
        public:
            typedef TypeName T;
        };
    

    hmm wenn du mit dem template irgendeine laufzeitdynamic hinkriegen willst muss ich dich enttäuschen, templates werden halt zur compilezeit ausgewertet,und auch sonst erkenn ich in der struktur keinen sinn^^

    Ich wollte zu meinem Framework PlugIns ermöglichen. Diese definieren Subklasssen, der Klassen des Frameworks, womit wiederum andere Klassen des Frameworks arbeiten.

    stichwort dynamische objekt fabriken siehe modernes c++ design, da wird mit maps,functoren und registrierfunktionen gearbeitet.



  • Plugins sind aber meistens in DLLs untergebracht also ganz du Templates vergessen. Google mal nach dem Factory Pattern



  • Factory hatte ich ganz vergessen, ansonsten hat otze recht, es würde sowieso nicht gehen, sorry für den Müll.



  • solange es nicht einen Menschen gibt, der beweisen kann, dass er noch nie eine schlechte idee hatte, braucht man sich für seine eigenen schlechten ideen nicht entschuldigen 😉

    ps: was ein satz 😮 stimmt die grammatik überhaupt? naja die satzstellung is auf jedenfall schief 🙄


Anmelden zum Antworten