oop problem



  • hi

    ich hab ein basistemplate und zwei templateklassen die davon erben
    das basistempalte ist nicht instanziierbar da abstrakt. nun möchte ich einen enum (oder eine andere speicherklasse die keinen speicher braucht) definieren (also so dass garantiert ist, dass die abgeleiteten versionen diesen wert zur verfügung stellen). wie mach ich das am besten?

    code ist in etwa so:

    template<class T>
    struct base
    {
        // enum {size}; ??
        void stuff() = 0;
    };
    template<unsigned dimensions>
    struct derrived : base<unsigned>
    {
        // enum {size = dimensions * 2}; ??
        void stuff() {}
    }
    

    mfg



  • nachtrag:
    im listing sollte die funktion in base natürlich virtual sein...



  • template<class T,
             std::size_t Size>
    struct base : std::integral_constant<std::size_t, Size>
    {
        virtual void stuff() = 0;
    };
    
    template<unsigned dimensions>
    struct derived : base<unsigned, dimensions * 2>
    {
        void stuff() {}
    }
    

    ?



  • Ich würde hier ja nicht von integral_constant ableiten (semantik). Enum oder static const finde ich sinnvoller.


Anmelden zum Antworten