lang:c:syntaxe:heritage
Ceci est une ancienne révision du document !
Méthodes statiques dans une interface
Normalement, c'est interdit mais apparemment, c'est possible en faisant du bricolage.
L'interface :
template < typename T > class StaticInterface { public: StaticInterface() { int(*fooCheck)(int) = T::foo; bool(*barCheck)(bool) = T::bar; } };
Une implémentation de la classe :
class DerivedClass : public StaticInterface<DerivedClass> { public: static int foo(int param){ return 10; } static bool bar(bool param){ return 20; } };
Cast vers un parent d'un héritage multiple
Depuis Parent1
, caster this
vers Parent2
.
Il ne faut surtout pas faire (ci-dessous). Sinon, les méthodes virtuelles (au minimum) appelleront n'importe quoi. De toute façon d'une manière générale, reinterpret_cast
ne s'utilise que vers la classe la plus basse dans l'héritage.
Parent2* p = reinterpret_cast<Parent2*>(this);
Il faut faire (ci-dessous). Puis un cast
naturel se fera de Enfant
vers Parent2
.
Parent2* p = static_cast<Enfant*>(this);
lang/c/syntaxe/heritage.1502206806.txt.gz · Dernière modification : 2017/08/08 17:40 de root