dorfe 11.10.2011 14:09

[21:18:04] <NANAKON> помогите, плз
[21:18:13] <vladvic> ?
[21:18:24] <NANAKON> я глобально переопределил операторы new/delete, и когда я делетаю через указатель на базовый, мне другой адрес приходит
[21:18:29] <NANAKON> как мне изначальный получить?
[21:19:25] <vladvic> мдэ...
[21:19:32] <NANAKON> что?
[21:19:45] <vladvic> хорошо сформулированный вопрос — половина ответа
[21:19:58] <vladvic> а что тут можно сказать, если вопрос понЯть даже сложно
[21:20:07] <NANAKON> что тут сложного?
[21:20:14] <NANAKON> base * p = new derived;
[21:20:16] <NANAKON> delete p;
[21:20:16] <vladvic> "и когда . долетаю через указатель"
[21:20:21] <NANAKON> делетаю
[21:20:59] <vladvic> а слова "удалЯю", или на крайнЯк, delete, тебе чем не угодили?
[21:21:20] <NANAKON> ну какая разница
[21:21:24] <NANAKON> хорошо, удаляю
[21:21:34] <jrh> ещЮ и Я не работает :)
[21:21:38] <vladvic> угу
[21:22:14] <vladvic> другой разумеетсЯ
[21:22:20] <jrh> NANAKON: когда ты удалЯешь, что происходит?
[21:22:28] <vladvic> потому что приходит указатель на предка
[21:22:55] <vladvic> хотЯ погоди
[21:23:14] <jrh> ну срезка, тока что из этого
[21:23:25] * smwh (~smwh@85.26.178.204) Quit (".")
[21:23:31] <NANAKON> ну у меня вызывается мой operator delete, но туда приходит уже не тот указатель(
[21:24:12] <wRAR> Я не работает потому что [23:23:45] NANAKON информациЯ: Charset translation is MACINTOSH
[21:24:26] <jrh> Я так и думал
[21:24:40] * smwh (~smwh@85.26.178.204) has joined #c++
[21:24:45] <jrh> мм
[21:25:34] <jrh> как правильно обзываетсЯ термин, подразумевающий краткое изложение концепции? применительно к исходникам
[21:27:04] <vladvic> NANAKON: потому что удалЯетсЯ у тебЯ базовый класс
[21:27:19] <vladvic> соответственно деструктор вызываетсЯ базового
[21:27:26] <vladvic> и адрес базового
[21:27:35] <vladvic> впрочем Я не уверен на 100%
[21:27:38] <NANAKON> ну эту проблему как-то можно разрешить?
[21:27:39] <vladvic> это домыслы
[21:27:42] <vladvic> да
[21:27:51] <vladvic> delete (derived*)p;
[21:28:12] <NANAKON> ну это не метод
[21:30:42] * i-no (~i-no@docsis-62-68-130-43.tomtelnet.ru) Quit ("")
[21:30:47] <Zeux> NANAKON, предлагаю сделать деструктор класса base виртуальным
[21:31:00] <wRAR> лол
[21:31:20] <NANAKON> а какая разница?
[21:31:23] <Zeux> где лол?
[21:31:24] * napa3um (~napa3um@89.105.150.193) Quit ("Leaving.")
[21:31:35] <wRAR> лол в том, что это надо делать молча и сразу
[21:31:45] <Zeux> сразу все деструкторы делать виртуальными?
[21:32:10] <wRAR> нет, только длЯ классов с виртфункциЯми
[21:32:12] <Zeux> NANAKON, размер класса увеличитсЯ, очевидно
[21:32:23] <Zeux> ну или не увеличитсЯ, как повезет
[21:33:20] <NANAKON> а чем мне поможет то, что увеличится размер класса?
[21:34:14] <Zeux> ну, больше шансов что программа свалитсЯ с bad_alloc до того, как ты успеешь сделать delete
[21:34:54] <NANAKON> ну не смешно(
[21:36:21] <Zeux> а ты попробуй
[21:36:56] <NANAKON> ща
[21:37:25] <Zeux> вдруг таки свалитсЯ
[21:38:48] <NANAKON> а надо в каждом базовом сделать так?
[21:39:05] <Zeux> нет, только в каждом втором
[21:39:13] <Zeux> начинаЯ с хвоста цепочки наследованиЯ
[21:39:45] <ferdelan> o_O
[21:39:59] <ferdelan> в базовом достаточно
[21:40:10] <NANAKON> ну у меня несколько базовых, очевидно же
[21:41:00] <Zeux> сколько?
[21:41:36] * LamerMan (~LamerMan@93-225-25-217.inthome.vrn.ru) has joined #c++
[21:42:32] <NANAKON> 2
[21:42:53] <Zeux> ну вот, в первом.
[21:43:08] <Zeux> (во втором с конца)
[21:44:25] * dies (~dies@194.187.230.83) has joined #c++
[21:46:13] <NANAKON> нифига(
[21:46:50] <Zeux> ну тогда поменЯй порЯдок
[21:47:12] <NANAKON> а если порядок поменяю, то в каком делать виртуальный деструктор?
[21:47:14] * SeXyCaT is now known as ‘ерыйЏепел
[21:47:15] <Zeux> в смысле, вместо того, чтобы наследовать derived от base1 и base2
[21:47:21] <Zeux> отнаследуй base1 и base2 от derived
[21:47:27] <Ingersol> о_Ћ
[21:47:36] * napa3um (~napa3um@89.105.150.193) has joined #c++
[21:47:45] <NANAKON> О_о
[21:48:41] <jrh> чтозабред в канале
[21:48:51] <wRAR> хз
[21:49:46] <Ingersol> длЯ начала, используй стандартные new/delete. затем исследуй, зачем и как работают виртуальные деструкторы
[21:50:10] <Ingersol> после того, как поймешь, зачем оно надо, начинай использовать свои new/delete
[21:52:55] <Zeux> какое отношение имеют свои/чужие new/delete к виртуальности деструкторов?
[21:53:58] * napa3um (~napa3um@89.105.150.193) Quit (EOF From client)
[21:55:08] <Ingersol> самое прЯмое
[21:55:17] <Ingersol> они редуцируют область возможных ошибок
[21:55:46] <Zeux> область возможных ошибок в данном случае — множество из 1 элемента
[21:57:19] * Ingersol (TT@89-28-52-153.starnet.md) Quit (Ping timeout)

P.S. NANAKON — широкоизвестный в узких кругах VoidEx, Zeux итак понятно кто :)

Do you really want to delete ?