Evet kışkırtıcı bir başlık attım :) Aslında yapacağımız olay bir structı nesne gibi kullanmak. Buna benzer bir kodu yıllar önce görmüştüm. O günden bu güne sürekli böyle bir şeyi nasıl yaparım diye araştırdım. Anca bugün çözebildim olayı ;) Kodu aşağıda yorum satırıyla beraber veriyorum. Yorumlarda gerekli açıklamaları yaptım.
Bu yazıyla C-3PO nun ne lakası var diyebilirsiniz. C ile resim ararken karşıma bu çıktı, bende boş durmasın dedim :)
/*
* Sınıfımızı yaratıyoruz
*/
struct _myobject {
// alt alanlar
int a, b;
/*
* Metod
* Burada fonksiyon pointerı tanımlıyoruz
*/
int (*add)(struct _myobject*);
};
// struct ön ekinden kurtuluyoruz
typedef struct _myobject MyObject;
/*
* Asıl işi yapacak fonksiyonu tanımlıyoruz
* MyObject structını parametre olarak alıyor
*/
int realAdd(MyObject* a) {
return a->a + a->b;
}
int main ( void ) {
/*
* Nesnemizi oluşturuyoruz.
* add pointerına fonksiyonu atıyoruz
*/
MyObject mo = {1, 2, realAdd};
printf("A + B = %d\n", mo.add(&mo));
return 0;
}
Kodun başına stdio.h headerını eklemekte fayda var. WP sıkıntı çıkarttığı için silmek zorunda kaldım. Kodun düzgün halini burada bulabilirsiniz.