- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
template <class ToPtr,class From>
ToPtr DynamicCast (From f)
{
// static check if *ToPtr is derived from f
(void)sizeof (static_cast<From> ((ToPtr)NULL));
// lazy precalculation
static bool castable = dynamic_cast<ToPtr> (f)!=NULL;
static int offset =
int ((char *)dynamic_cast<ToPtr> (f)-(char *)f);
return castable? (ToPtr)((char *)f+offset) : NULL;
}
// usage: TBase *ptr1 = ...; TDerived *ptr2 = DynamicCast<TDerived *> (ptr1);
деградировал, ленюсь - или он на самом деле столь страшен и нечитаем?
решетчатый и жабий код читаются влет.
как-то раньше был за лаконичность, чтобы знаками экономить ключевые слова. а вот теперь смотрю, что всякие <> ? :: * здорово затрудняют читаемость, беглый взгляд не позволяет уцепить смысл кода.
не страшно, если кто то не умеет писать или читать крестокод, главное, чтобы человек был хороший
http://bit.ly/15WfAhM