Une possibilité en utilisant SFINAE pour tester si la classe est abstraite pendant l'exécution (il me semble que c'était ce que tu demandais):
ça compile sur un compilateur même pas C++98 (le borland gratuit, un ancêtre tout petit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 template <class T> struct Test { typedef T type; Test(int) { create(); } void create() { new T(); } }; template <class T> void test_if_abstract( Test<T>::type ) {} template <class T> void test_if_abstract( ... ) { throw 1; } int main() { test_if_abstract<ConcreteBase>(10); test_if_abstract<AbstractBase>(10); };
et ça envoie une exception à l'exécution.
non, il y a une erreur dans mon code, dsl
Partager