|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Alexander S. Usov 2:5020/400 05 Feb 2003 03:03:55 To : Valentin Nechayev Subject : Re: 386SX and RedHat_8.0 -------------------------------------------------------------------------------- .ua> <s93znph6sn5.fsf@cheusov.scnsoft.com> <20030131211357.GB537@iv.nn.kiev.ua> .ua> <s93wukguida.fsf@cheusov.scnsoft.com> <20030204172200.GA377@iv.nn.kiev.ua> From: "Alexander S. Usov" <A.S.Usov@kvi.nl> Valentin Nechayev wrote: > AC> Hу да. > AC> Временные файлы после ^C остаются. > AC> tmpfile (3) - единственный способ это исправить? > AC> И вообще, какие есть способы кроме как хранить > AC> глобальный список временных файлов > AC> и писать обработчики событий. > > Программа одноветочная? Если да - в обработчике SIGCHLD сделать throw. > Hа gcc3 это должно работать без проблем, на 2.95 - 2.96 - в одноветочных > должно работать. Кстати, а в pthreads можно выполнить код в контексте соседнего потока? Если да то довольно несложно всем раздать исключения. > AC> Это я уже понял. > AC> Даже банального extern "C" можно и не увидеть. > AC> Благо, в open source это легко исправляется. > > extern "C" { > #include <zuka.h> > } > Метод рекомендован лично Страуструпом ;) Hе, лучшими плюсоводами ;) А я тут одного товарища знаю так он на каждый хедер выставляет ещё и include guards. Аж специальные макросы для emacs накатал. В целях унификации :) > class zuka { > ... > virtual ~zuka() = 0; > }; > > пробовал - работало. В реальных классах надо переопределить. А смысл его пробовать. Это законный и единственный (нормальный) метод убить клас если у нас есть только указатель на его предка. Так что тоже рекомендовано лучшими плюсоводами ;) > AC> А что тут переводить? > AC> За создание объектов отвечает class factory. > AC> Приложение (клиент) говорит CoCreateInstance с id > AC> и получает указатель на интерфейс. > AC> Работает с ним и в конце говорит ReleaseInstance. > AC> Количество клиентов считается и, если после вызова > AC> ReleaseInstance становится равным нулю, объект делает > AC> delete *this. > AC> Примерно так. > > OK, но не вижу прямой связи с pure abstract classes. А что мешает сделать свой ReleaseInstance и звать его? В COM ты тоже руками всё делаеш. И Releas и Get и ссылки считаеш. И сам себя потом убиваеш. В чём проблема? Тебе даже виртуальных деструкторов не надо. И вообще COM это обычный C++, слегка покоцали и тапа стандартизировали ;) -- Best regards, Alexander. --- ifmail v.2.15dev5 * Origin: KVI (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/6577abd8b3fe.html, оценка из 5, голосов 10
|