Ich habe eine Klasse, die eine Wrapper-Klasse (dient als eine gemeinsame Schnittstelle) um eine andere Klasse, die die erforderliche Funktionalität implementiert. Also sieht mein Code so aus.Überprüfung der Vererbung mit Vorlagen in C++
template<typename ImplemenationClass> class WrapperClass {
// the code goes here
}
Nun, wie kann ich sicherstellen, dass ImplementationClass
nur, ähnlich wie Java-Generika-
<? extends BaseClass>
Syntax aus einem Satz von Klassen abgeleitet werden?
Sie können es mit BOOST_STATIC_ASSERT an Stelle von enable_if etwas klarer machen. d.h. BOOST_STATIC_ASSERT (boost :: is_base_of); –
Ferruccio
Ja, ich habe das hinzugefügt. Ich bevorzuge enable_if, da Sie verschiedene Versionen haben und etwas bessere Fehlermeldungen (IMO) erhalten. Manche Leute mögen auch die Fehlermeldungen von MPLs statischem Assert. –
Danke, das hat funktioniert :) – JSN