Re: Re: C++ timer v objektu

František Burian BuFran@seznam.cz
Úterý Srpen 4 10:33:16 CEST 2009


A co wrapper? pro každý callback můžete nastavit nějaký int v návratové hodnotě, pro identifikaci kontextu 
probíhajícího callbacku. No a kdo říká že ten int nemůžete interpretovat jako pointer na instanci objektu ?

void callback_wrapper(int ctx)
{
    MujObjekt *obj = dynamic_cast<MujObjekt*>((void*)ctx)
    if (obj)
       obj->MetodaObjektu();
}

Zlaté C++ :-)

Mno a kdyby namítal někdo, že v okamžiku vyvolání callbacku už nebude exstovat objekt toho callbacku, 
tak to lze řešit trošku složitějším wrapperem, který při konstuktoru se vloží do tabulky živých objektů LOT, 
a při destruktoru se vyjme z LOT, no a ta funkce callback wrapperu si ještě mimo kontroly na NULL 
ještě zkontroluje jestli je v tabulce LOT.

Tohle půjde použít tam, kde sizeof(int)==sizeof(int*), takže to není plně portabilní, ale každý design 
callbacků s tímto přístupem počítá, originálně však počítá s pointerem na strukturu, ale objekt je 
vlastně trošku nabubřelá struktura.

Použité zkratky:

LOT: Living Objects Table
Wrapper: programový vazač dvou nesvázatelných věcí

Hodně štěstí :-)

< ------------ Původní zpráva ------------
< Od: Miroslav Šinko <sinkomiro@gmail.com>
< Předmět: Re: C++ timer v objektu
< Datum: 04.8.2009 00:45:28
< ----------------------------------------
< Musite mat smernik na funkciu. Ak je funkcia metodou triedy, musi
< existovat instancia objektu pre danu triedu. Typicky pre Win32 to
< mozte riesit static metodou triedy so vsetkym, co s tym suvisi.
< 
< miro
< 
< 2009/8/3, Va_Sm <spiritusII@seznam.cz>:
< > Zdravim,
< > zajimalo by me, jak  vyresit problem, kdy mam objekt, kde jedna z metod
< > zapne timer a po jeho uplynuti se vyvola jina metoda(callback funkce)
< > obsazena v tomto objektu? Nemate nekdo vhodny prikladik, ktery toto resi
< > a v kterem bych se mohl inspirovat?
< > dekuji
< > VS
< _______________________________________________
< HW-list mailing list  -  sponsored by www.HW.cz
< Hw-list@list.hw.cz
< http://list.hw.cz/mailman/listinfo/hw-list
< 
< 
< 



Další informace o konferenci Hw-list