![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Jcs |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 1.10.2003 Репутация: нет Всего: нет |
Можно ли как-то узнать, что был вызван один из методов класса? Средствами языка, похоже, нельзя. Может кто-нить решал подобную задачу?
|
|||
|
||||
| Leopard25 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 17.4.2004 Репутация: нет Всего: нет |
Ты вовремя отладки хочешь узнать был-ли вызван один из методов класса?
Если да попробуй: TRACE --------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций ) |
|||
|
||||
| Jcs |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 1.10.2003 Репутация: нет Всего: нет |
Нет, не во время отладки. Я хочу на основе этого классы построить. Достаточно широкий круг возможностей появляется в этом случае.
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
странный какой-то вопрос
что значит засечь? и где? внутри класса чтоли ( так это и так известно ) снаружи -- аналогично, по-идее ( как-никак ты методы вызываеш ) или ты что-то типа событий навесить хочеш? тогда просто обертки для всех классов писать нужно. -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Jcs |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 1.10.2003 Репутация: нет Всего: нет |
Последний, видимо, вариант. В случае оберток я не смогу решить задачу для типов без оных.
Пример задачи - дублирование действий. Есть класс, унаследованный от некоторого и содержащий в себе ссылки на пару экземпляров базового класса. При вызове любого метода он должен вызвать этот метод для содержащихся внутри ссылок. Перечислять все методы и вызывать их вручную неохота как-то. Вот если бы был способ, позволяющий отловить вызов метода, тогда задачка решалась бы буквально в две строчки. |
|||
|
||||
| AndyY |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
Jcs
считаю что лучше все-же вызывать явно. Можно конечно написать что-то типа макроса... Было бы лучше если бы ты привел конкретный пример. |
|||
|
||||
| Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 93 |
Возникла у меня мысль попробовать VirtualProtect, чтобы установить PAGE_GUARD, а там получилось бы исключение при попытке доступа к адресу в памяти, а его можно было бы перехватить...
Но потом я подумал ещё раз и решил, что пора идти спать В любом случае надо объявлять все функции класса, а раз ты их объявил то и впиши в их тело макрос, как сказал AndyY, вызывающий нужные методы. -------------------- Да. Именно так. |
|||
|
||||
| Jcs |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 156 Регистрация: 1.10.2003 Репутация: нет Всего: нет |
Можно сделать так, но ведь это отстой.. А если base изменится? Тогда каждый раз дописывать производный? Если использовать вариант с макросом, то я смогу использовать тока те функции, в которых он есть. Хотелось бы иметь возможность работать подобным образом с любым классом, не изменяя его. Это сообщение отредактировал(а) Jcs - 8.7.2004, 08:30 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |