eine frage zur vererbung



  • gibt es eine möglichkeit eine public vererbung so einzuschränken, dass nur klassen, die von einer andren abgeleitet sind, vererbt werden können?
    also:

    class a{};
    class b:public a{};
    
    template<class T>
    class c:public T:public a{// nur klassen die von a abgeleitet sind werden akzeptiert
    };
    


  • Öhm, nein nicht direkt.

    Aber vielleicht hilft dir das

    #include <boost/static_assert.hpp>
    #include <boost/type_traits/is_base_and_derived.hpp>
    
    struct a { virtual ~a() { } };
    class b : public a { };
    
    template<class T>
    class foo : public T {
      BOOST_STATIC_ASSERT( (boost::is_base_and_derived<a,T>::value) );
    };
    
    int main() {
      foo<b> bar; //geht
      foo<int> bar; //geht nicht
    }
    


  • hmm jo...muss ich es wohl so machen 😃


Anmelden zum Antworten