- 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);
bormand 11.06.2013 23:20 # +3
Lure Of Chaos 12.06.2013 06:51 # +1
деградировал, ленюсь - или он на самом деле столь страшен и нечитаем?
roman-kashitsyn 12.06.2013 09:57 # +4
Lure Of Chaos 12.06.2013 10:30 # 0
решетчатый и жабий код читаются влет.
defecate-plusplus 12.06.2013 12:06 # 0
roman-kashitsyn 12.06.2013 12:13 # +1
Lure Of Chaos 12.06.2013 12:25 # +1
как-то раньше был за лаконичность, чтобы знаками экономить ключевые слова. а вот теперь смотрю, что всякие <> ? :: * здорово затрудняют читаемость, беглый взгляд не позволяет уцепить смысл кода.
defecate-plusplus 12.06.2013 12:37 # +1
не страшно, если кто то не умеет писать или читать крестокод, главное, чтобы человек был хороший
TarasB 12.06.2013 13:01 # +3
defecate-plusplus 12.06.2013 13:18 # +6
http://bit.ly/15WfAhM
TarasB 12.06.2013 13:32 # 0
absolut 12.06.2013 15:37 # 0
Lure Of Chaos 20.06.2013 08:45 # 0