Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.166.98] |
|
Сообщ.
#1
,
|
|
|
Такая ситуация: Имеем два класса
class a { int variable; } class b { void func(); } Надо , что бы при изменении a.variable класс b запускал func(). может кто подскажет , что делать |
Сообщ.
#2
,
|
|
|
Hint: Функция "func()" не должна менять состояние экземпляра класса.
class b { public: void func() const; } class a { int variable; public: void setVariavle(int v){ variavle = v; b::func(); } int getVariavle(int v){ return variavle; } } |
Сообщ.
#3
,
|
|
|
Если утебя окна то можешь использовать сообщения
|
Сообщ.
#4
,
|
|
|
А если у тебя Билдер, то можешь использовать __property
|
Сообщ.
#5
,
|
|||
|
ну если рассматривать изменение как присвоение (варианты с memcpy() на адрес этой переменной чего бы то ни было не рассматриваем), тогда напрашивается вывод: твоя переменная в классе а должна быть экземпляром твоего класса (нового), который во-первых имитирует работу с интом (рядом где-то мелькало), а во-вторых имеет перегруженный оператор присвоения, который как раз может вызывать функцию из класса b. конечно вопрос какая у тебя эта функция - статическая? тогда нет вопросов. иначе придется еще хранить ссылку на экземпляр класса b, для которого ты будешь вызывать эту функцию. но это уже детали. |
Сообщ.
#6
,
|
|||
|
Например так:
|
Сообщ.
#7
,
|
|
|
2 Sazabis: Так не сработает.
|
Сообщ.
#8
,
|
|||||
|
вот так точно работает
|
Сообщ.
#9
,
|
|
|
__closure - это Borland-specific.
|
Сообщ.
#10
,
|
|
|
так я в борланде отлаживал
кстати, что за фигня, что борланд для функций членов __closure подставляет ? Для обычной функции все ок. |