Wie testen, ob Klasse B von Klasse A abgeleitet ist?

7

Nehmen wir an, ich habe eine Klassenvorlage mit den Parametern A und B , und ich hätte gerne einen Compilerfehler (wenn die Vorlage instanziiert wird), wenn B nicht von A abgeleitet ist.

%Vor%     
Timo 26.12.2010, 00:18
quelle

3 Antworten

10

Das wurde schon so oft gefragt, aber es ist so einfach, dass ich die Lösung erneut posten werde:

%Vor%     
Ben Voigt 26.12.2010, 00:28
quelle
9

Überprüfen Sie boost :: is_base_of . Und wenn Sie es selbst machen wollen, versuchen Sie den Code von Alexeyey von diese Frage :

%Vor%

Bearbeiten Das Schreiben statischer Assertion ist keine große Sache, aber hier ist es:

%Vor%

Edit2. Und die ganze Arbeit, wenn Sie nicht wissen, wie Sie diese Dinge zusammenführen: Code auf ideone

    
Pawel Zubrycki 26.12.2010 00:26
quelle
0

Was Sie wollen, ist etwas, das SFINAE-Regeln verwendet, um eine Vorlage zu erstellen, die einen Fehler in dem Fall erzeugt, der normalerweise bevorzugt wird, aber auch auf andere Weise erweitert werden kann. Ich glaube, dass Boost möglicherweise bereits eine Vorlage hat, die genau das tut.

Jemand anders hat Ihnen einen Code gegeben. Ich lasse diese Antwort, weil es erklärt, wie der Code funktioniert.

    
Omnifarious 26.12.2010 00:26
quelle

Tags und Links