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