0xd34df00d 03.07.2011 15:06 Azoth_primary

C++ — это такой источник адреналина годный. Делаю даункаст по иерархии объекта внутри деструктора его базового класса (что, вообще говоря, UB), но должно сработать, ибо я потом просто пройдусь по списком std::remove'ом и удалю элемент, соответствующий этому. А методы дергать не буду, поэтому на vtbl объекта в частности и на его состояние вообще как-то насрать.

1. werehuman 03.07.2011 15:08 Psi+

это не адреналин, это извращение

2. 0xd34df00dwerehuman /1 03.07.2011 15:09 Azoth_primary

Почему?

3. werehuman0xd34df00d /2 03.07.2011 15:10 Psi+

looks like. Всё равно приведение к левому типу выглядит опасно, даже если юзать не будешь.

4. 0xd34df00dwerehuman /3 03.07.2011 15:10 Azoth_primary

Он не левый, он просто уже как объект этого типа уже не существует.

5. werehuman0xd34df00d /4 03.07.2011 15:10 Psi+

рискуешь получить гонку процессов. Хуже ничего нет.

6. 0xd34df00dwerehuman /5 03.07.2011 15:12 Azoth_primary

Из какого это места это вытекает?

7. werehuman0xd34df00d /6 03.07.2011 15:14 Psi+

хм, пожалуй да, нету. Запутался от "как объект этого типа не существует".

8. gelraen 03.07.2011 15:18 imax

зачем такое делать?

9. 0xd34df00dgelraen /8 03.07.2011 15:19 Azoth_primary

Вместо
Q_FOREACH (Highlighter *hl, Highlighters_)
if (hl == sender ())
{
Highlighters_.removeAll (hl);
break;
}
писать
Highlighters_.removeAll (static_cast<Highlighter*> (sender ()));

Do you really want to delete ?