Автор
|
Тема: про удаление класса
|
sergeyMJ |
опубликован 15-02-2002 16:44 MSK
Правильно ли вызывать из функции-члена, удаление себя самого.void CClass::Closing() { delete this; }
|
migel
|
опубликован 15-02-2002 18:06 MSK
Если обеспечиш только динамическое создание экземпляров класса, и даш гарантии что никто после этого указатель на объект использовать не будет то можно
|
al
|
опубликован 15-02-2002 19:30 MSK
в MSF delete this - стандартный способ удаления потомков CWnd (помещается в PostNcDestroy) или COM-обектов (помещается в FinalRelease) - так что использовать не только можно, но и нужно. |
Valery
|
опубликован 15-02-2002 20:19 MSK
мне кажется проще, чем использовать такие замороки, все-таки ведущие указатели. или уж если хочется гарантий, что объект создан в куче, придется перегружать new твоего класса. ЗЫ но ведущие указатели все же проще и универсальней, тем более для своих классов. |
sergeyMJ
|
опубликован 15-02-2002 21:53 MSK
Что такое ведущие указатели, пример если можно? |
sergeyMJ
|
опубликован 15-02-2002 21:58 MSK
Собственно почему я такой вопрос задаю. Мне нужно убивать класс CClientSocket, когда с ним разрывают связь. Вызывается CClientSocket::OnClose() { ... обработка delete this; } и в нем я хочу убить его самого. Другого способа пока не вижу. Если знаете, подскажите. |
Valery
|
опубликован 15-02-2002 22:47 MSK
ведущие указатели - шаблонный (обычно) класс, который сам знает как и когда создавать и уничтожать объект вложенного в него (ведомого) типа. обычно у него перегружен оператор селектора по адресу, так чтобы возвращать указатель на объект указываемого типа. Тогда нормально срабатывает к примеру такой синтаксис: mp->func(); где, mp - соответственно ведущий указатель на пользовательский класс, func() - функция пользовательского класса. очень хорошо про ведущие указатели (и не только) написано у Джефа Элджера в серии Библиотека программиста. В принципе могу кинуть для примера свой класс ведущих указателей, да их и так как собак нерезанных в округе валяется. |
ADK
|
опубликован 18-02-2002 13:46 MSK
delete this метод общепринятый, но вот boudsChecker на него ругается... |
Stiff
|
опубликован 18-02-2002 14:22 MSK
2 Valery А гденибудь в сети есть Джефа Элджера, а? |
Valery
|
опубликован 18-02-2002 15:39 MSK
2Stiff: есть, конечно - www.bolero.ru :)) а если серьезно, не знаю, я предпочитаю нормальные книги, перепечатки тяжело таскать, с экрана читать - глаз жалко. |