Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вызов метода класса, можно ли засечь момент? 
:(
    Опции темы
Jcs
Дата 7.7.2004, 07:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 1.10.2003

Репутация: нет
Всего: нет



Можно ли как-то узнать, что был вызван один из методов класса? Средствами языка, похоже, нельзя. Может кто-нить решал подобную задачу?
PM   Вверх
Leopard25
Дата 7.7.2004, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 17.4.2004

Репутация: нет
Всего: нет



Ты вовремя отладки хочешь узнать был-ли вызван один из методов класса?

Если да попробуй: TRACE
--------------------
Обдумай, верно ли и возможно ли то, что ты обещаешь, ибо обещание - есть долг. ( Конфуций )
PM MAIL ICQ   Вверх
Jcs
Дата 7.7.2004, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 1.10.2003

Репутация: нет
Всего: нет



Нет, не во время отладки. Я хочу на основе этого классы построить. Достаточно широкий круг возможностей появляется в этом случае.
PM   Вверх
_hunter
Дата 7.7.2004, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



странный какой-то вопрос smile.gif
что значит засечь? и где?
внутри класса чтоли ( так это и так известно )
снаружи -- аналогично, по-идее ( как-никак ты методы вызываеш )
или ты что-то типа событий навесить хочеш? тогда просто обертки для всех классов писать нужно.


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Jcs
Дата 7.7.2004, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 1.10.2003

Репутация: нет
Всего: нет



Последний, видимо, вариант. В случае оберток я не смогу решить задачу для типов без оных.
Пример задачи - дублирование действий. Есть класс, унаследованный от некоторого и содержащий в себе ссылки на пару экземпляров базового класса. При вызове любого метода он должен вызвать этот метод для содержащихся внутри ссылок. Перечислять все методы и вызывать их вручную неохота как-то. Вот если бы был способ, позволяющий отловить вызов метода, тогда задачка решалась бы буквально в две строчки.
PM   Вверх
AndyY
Дата 7.7.2004, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.5.2004
Где: СПб

Репутация: 2
Всего: 4



Jcs
считаю что лучше все-же вызывать явно. Можно конечно написать что-то типа макроса...
Было бы лучше если бы ты привел конкретный пример.


--------------------
PM MAIL WWW   Вверх
Дрон
Дата 8.7.2004, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



Возникла у меня мысль попробовать VirtualProtect, чтобы установить PAGE_GUARD, а там получилось бы исключение при попытке доступа к адресу в памяти, а его можно было бы перехватить...
Но потом я подумал ещё раз и решил, что пора идти спать smile.gif

В любом случае надо объявлять все функции класса, а раз ты их объявил то и впиши в их тело макрос, как сказал AndyY, вызывающий нужные методы.


--------------------
Да. Именно так.
PM   Вверх
Jcs
Дата 8.7.2004, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 1.10.2003

Репутация: нет
Всего: нет



Код

class base
{
public:
   f(){...}
   g(){...}
};

class derived
{
   base& first;
   base& second;
   
   f()
  {
       first.f();
       second.f();
   }

   g()
   {
       first.g();
       second.g();
   }
};


Можно сделать так, но ведь это отстой.. А если base изменится? Тогда каждый раз дописывать производный? Если использовать вариант с макросом, то я смогу использовать тока те функции, в которых он есть. Хотелось бы иметь возможность работать подобным образом с любым классом, не изменяя его.

Это сообщение отредактировал(а) Jcs - 8.7.2004, 08:30
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0639 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.