- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
class CBaseEntity {
// ...
void (CBaseEntity ::*m_pfnThink)(void);
virtual void Think( void ) { if (m_pfnThink) (this->*m_pfnThink)(); };
// ...
// Ugly code to lookup all functions to make sure they are exported when set.
#ifdef _DEBUG
void FunctionCheck( void *pFunction, char *name )
{
if (pFunction && !NAME_FOR_FUNCTION((uint32)pFunction) )
ALERT( at_error, "No EXPORT: %s:%s (%08lx)\n", STRING(pev->classname), name, (uint32)pFunction );
}
BASEPTR ThinkSet( BASEPTR func, char *name )
{
m_pfnThink = func;
FunctionCheck( (void *)*((int *)((char *)this + ( offsetof(CBaseEntity,m_pfnThink)))), name );
return func;
}
// ...
};
// Ugly technique to override base member functions
// Normally it's illegal to cast a pointer to a member function of a derived class to a pointer to a
// member function of a base class. static_cast is a sleezy way around that problem.
#ifdef _DEBUG
#define SetThink( a ) ThinkSet( static_cast <void (CBaseEntity::*)(void)> (a), #a )
// ...
#else
#define SetThink( a ) m_pfnThink = static_cast <void (CBaseEntity::*)(void)> (a)
// ...
#endif
bormand 05.11.2015 20:25 # +1
bormand 05.11.2015 20:34 # +1
Ну и косвенный вызов метода ребёнка с this'ом от родителя смотрится странновато, даже если наследование не множественное...
Antervis 06.11.2015 06:18 # 0
Да и зачем кастить?:
http://ideone.com/LLLk3C
п.с. какой тут тэг для линка?
3_14dar 06.11.2015 09:20 # −1
1024-- 06.11.2015 10:52 # +1
3_14dar 06.11.2015 11:48 # −1
1024-- 06.11.2015 13:53 # +2
Кстати, в 1С-то, оказывается, та же беда:
> Выборка = Результат[1].Выбрать();
> | 0 КАК ЛимитСрок
> Если СтрДлина(Комментарий) < 11 Тогда
Только вот всякие питоносишки разрабатывали для американцев и тех, у кого раскладки похожие, а 1С - как раз для тех, у кого "[", "]", "<", ">" и "|" нет.
Предлагаю улучшить 1С и каждую переменную именовать, начиная с "$".
3_14dar 06.11.2015 19:02 # 0
Vasiliy 06.11.2015 19:34 # +1
3_14dar 06.11.2015 20:08 # +2
gost 06.11.2015 20:24 # +4
3_14dar 10.11.2015 01:35 # 0
bormand 06.11.2015 19:44 # 0
3_14dar 06.11.2015 20:09 # 0
bormand 06.11.2015 20:21 # 0
> самая маленькая из проблем
Ну не скажи. Мне при слепой печати пиздец как мешать будет. Я минут через 10 уже психанул бы поди :)
1024-- 06.11.2015 20:24 # 0
bormand 06.11.2015 20:25 # 0
1024-- 06.11.2015 20:30 # 0
bormand 06.11.2015 20:33 # +3
altgr + 7 {
altgr + 0 }
altgr + 8 [
altgr + 9 ]
Видимо питон придумал немец, чтобы не писать { }.
1024-- 06.11.2015 21:29 # 0
3_14dar 10.11.2015 01:34 # +1
И набираешь их левой рукой, держа правую на altgr.
Antervis 09.11.2015 06:07 # 0
kegdan 09.11.2015 15:48 # 0
3_14dar 06.11.2015 20:36 # 0
3_14dar 06.11.2015 20:25 # 0
Итого: через altgr (альт справа) набирается |[]{}\~€@. Программируйте на здоровье.
> самая маленькая из проблем
ОК, самая маленькая из проблем для тех кто пользуется ей больше хотя бы года
bormand 06.11.2015 20:30 # 0
Хм, ` (которая у нас на ё) со второго раза срабатывает и превращается в ^. В чём фишка? Это какая-то эскейп-последовательность для редких символов.
З.Ы. Ага, хвостики какие-то дорисовывает у всяких j.
ĵjĴJ
3_14dar 06.11.2015 20:35 # 0
Antervis 09.11.2015 06:14 # 0
3_14dar 10.11.2015 01:35 # 0
bormand 10.11.2015 06:21 # 0
Antervis 10.11.2015 06:56 # 0
CHayT 11.06.2016 14:00 # 0
первое время мне приходилось где-то раз в пять минут закрывать глаза и считать до 30, чтобы не разнести клавиатуру
потом подобное повторилось в чуть меньших масштабах, когда переучивался в обратную сторону
3_14dar 10.11.2015 01:37 # 0
inkanus-gray 11.06.2016 14:31 # 0
dxd 11.06.2016 14:55 # 0
bormand 06.11.2015 17:00 # 0
Ну для удобства. Методы, которые в SetThink передают, они же только в дочернем классе есть. А хочется их в коллбек засунуть, причём этот коллбек дёргает база...
Да на самом деле, можно заворачивать всё это в какой-нибудь std::function или его аналог и не париться... А если совсем критично по пирфомансу - кастомный аллокатор с пулом поможет.
Antervis 09.11.2015 06:16 # 0
bormand 09.11.2015 17:51 # 0
mittorn 09.11.2015 08:36 # +1
М.б. с этим проблемы были в середине 90x
bormand 09.11.2015 17:52 # 0
И ещё какие... В Qt тоже всё своё мутили по тем же самым причинам...
bormand 05.11.2015 20:56 # 0
Milonov 05.11.2015 23:07 # 0
gost 06.11.2015 12:23 # +4
Указатели кастовали-кастовали, да не выкастовывали.
guest 07.11.2015 01:51 # 0
http://javascript.ru/forum/offtopic/59326-coffee-rozhdenie-legendy.html
guest 07.11.2015 01:55 # 0
guest 07.11.2015 02:01 # 0
3.14159265 09.11.2015 03:35 # +1
>offtopic
>rozhdenie-legendy.html
Хм... Почему у меня движок ГК не подсвечивает ссылку зеленым?
kegdan 09.11.2015 15:49 # 0
3.14159265 12.01.2018 05:33 # 0
COWuTEJIbTBOEuMAMKu 12.01.2018 13:20 # 0