C++ hakkında bir soru?

Başlatan yamak, 09 Mayıs 2013, 05:26:58

yamak

C++ da Qt'de signal slot yapısına benzer ya da visual studio daki event'lere benzer bir şeyi nasıl yaparım.Örneğin c++'da bi tane buton sınıfı oluşturdum.Bu sınıfa da bi tane basıldı adında fonksiyonu koydum:Daha sonra da bu buton sınıfından buton1 adında bir nesne türettim:

buton1.basıldı();

komutunu çalıştırdığımda yine main dosyamda oluşturduğum buton1_basıldı fonksiyonunu nasıl çağırırım.Tabi bu olay tüm butonlar için geçerli olacak.buton2.basıldı() çalıştığında da buton2_basıldı() fonksiyonu çalışacak. Bu olayı basıldı fonksiyonuna, çalıştırmak istediğim fonksiyonun adresini göndererek yapmaya çalıştım ama beceremedim.Bu işi nasıl çözerim.Bi fikri olan var mı?

controller

Hesabım OG tarafından haksız bir şekilde pasif yapılmıştır.

yamak

Alıntı yapılan: controller - 09 Mayıs 2013, 09:43:35
boost::signal kullanabilirsin.

http://www.boost.org/doc/libs/1_53_0/doc/html/signals.html

Hocam buradaki olaya benzer bi kod yazdım ama çalışmadı. attached adında bi fonksiyonla çalıştırmak istediğim fonksiyonun adresini aldım ve memcpy ile o fonksiyonun dataları başka biyere kopyaladım.
void button::attached(void(*fonk)(void))
{
	memcpy(fonk_data,(char*)fonk,sizeof(fonk));
}


burada fonk_data da 50 elemanlı bir dizi.

daha sonra clicked fonksiyonumu da şu şekilde yazdım
void button::clicked(void)
{
	clicked_fonk=(void(*)(void))fonk_data;
	clicked_fonk();
}


fakat button1.clicked() ı çalıtırdığımda hiçbişey olmadı.Sizce sorun nerde.

Alıntı yapılan: controller - 09 Mayıs 2013, 09:43:35
boost::signal kullanabilirsin.

http://www.boost.org/doc/libs/1_53_0/doc/html/signals.html



hocam bu sınıfı kendi projemde nasıl kullanabilirim.Bi türlü bulamadım.

yamak

Arkadaşlar bu konuda bi fikri olan yok mu?