|
dev.gamez.lv Latvian Game Developers Community
|
View previous topic :: View next topic |
Author |
Message |
Guest
|
Posted: Wed Sep 07, 2005 5:24 pm Post subject: Funkciju Callback |
|
Esmu redzeejis, ka riikojoties ar glut var izsaukt scene,keyboard,mouse, u.c callback. Gribu zināt kā vispār Callbacki strādā un kā var šo sistēmu izveidot iekš C++.
Man shitas variants baigi iepatikaas, it kaa saprotamaaks, nav 1001 reizi jaamaina dzineejs, ja grib saakt jaunu projektu.
Code: | engine->createwindow("Jauns Projekts");
engine->init_callback(cutom_init_function);
engine->exit_callback(cutom_deinit_function);
engine->renderscene_callback(cutom_renderscene_function);
engine->event_callback(my_sdl_event_parser); |
|
|
Back to top |
|
|
GiGa Indago Uzvarētājs
Joined: 25 Sep 2003 Posts: 887
|
Posted: Wed Sep 07, 2005 5:35 pm Post subject: |
|
Quote: | Gribu zināt kā vispār Callbacki strādā un kā var šo sistēmu izveidot iekš C++. |
Palasi The Function Pointer Tutorials.
Ja rodas kaads konkreets jautaajums, labpraat atbildeeshu |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Sep 07, 2005 6:04 pm Post subject: |
|
Iekš C++ labāk izmantot nevis fukciju callbakus (kas nāk no C), bet gan pilnas OOP piedāvātās iespējas - klašu mantošanu un virtuālās funkcijas. |
|
Back to top |
|
|
Guest
|
Posted: Wed Sep 07, 2005 6:09 pm Post subject: |
|
tur vispaar saprast neko nevar. No nekurienes uzrodas kaut kaads mistisks qsort ar ntajiem parametriem no kuriem viens ir tas callback.
pat code guru bija labaaks Sheit
kaadam nav kaads pavisam, pavisam basic piemeers?
ps callback variants ir labs vai ir kaads labaaks? |
|
Back to top |
|
|
banshee
Joined: 22 Aug 2005 Posts: 10 Location: Behind you
|
Posted: Wed Sep 07, 2005 6:23 pm Post subject: |
|
bubu wrote: | Iekš C++ labāk izmantot nevis fukciju callbakus (kas nāk no C), bet gan pilnas OOP piedāvātās iespējas - klašu mantošanu un virtuālās funkcijas. |
vai luudzu vareetu paqteikt, kas ir klašu mantošana un virtuālās funkcijas(par šīm kas ir kā izmanto, cik labas) _________________ If you hear me screaming- you'll be dead |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Wed Sep 07, 2005 6:52 pm Post subject: |
|
Quote: | vai luudzu vareetu paqteikt, kas ir klašu mantošana un virtuālās funkcijas(par šīm kas ir kā izmanto, cik labas) |
Nu ja jau tika prasīts C++ (nevis C), tad jau jāizmanto OOP. Klašu mantošana ir klases darbības paplašināšana ar savām funkcijām/parametriem. Tev, piemēram, ir kautkāda funkcija/klase/whatever, kas sagaida bāzes klasi A, kurai jāmāk darbība callback(), tad, ja tu to gribi savādāku, uztaisi klasi B, kura tiek mantota no klases A, un tajā realizē savu callback() funkcijas darbību. Un tad tur kur tiek sagaidīts A, tu varēsi padod B (kā zemāk piemērā ar Galvenaa/Manto).
Virtuālās funkcias ir pēc būtības ļauj mantotajai klasei izsaukt virsklases metodi. Ir vēl pure virtual metodes (abstraktās), kuras bāzes klasē netiek implementātas pavisam (tas callback() piem), bet tiek pieprasīts, lai mantotajā klasē tās tiek realizētas pavisam noteikti.
A kas labs - to grūti pateikt, to pats saprot ar laiku un pieredzi :) Man personīgi OOP patīk, jo tad kods tiek būvēts kā no maziem klucīšiem kopā liekot, nevis parastā, ar funkciju kaudzi rakstīšanas metode, kur ar laiku liekas viena liela miskaste kodā sarodās.
Tie ir OOP pamatu pamati.
Piemērs ar klasēm:
Code: | #include <cstdio>
// šī ir galvenā klase, kura pamatā tavai enginei
class Galvenaa {
public:
void run() {
// kauko daram
callback(1); // izsaucam callbacku
callback(2); // izsaucam callbacku
// daram kautko citu
}
// callback funkcija (nekā nedara),
// protams papildus var likt visādus parametrus klaat
virtual void callback(int i) {
}
/* cits variants ir definēt pure virtual metodes (ja pareizi sintaksi atceros):
virtual void callback(int i) = 0;
*/
};
// šī klase izmantos to callbacku, kuru vari taisīt katru reizi savādāku
class Manto : public Galvenaa {
void callback(int i) {
std::printf("Esmu callbacks i=%i\n", i);
}
};
int main(int argc, char* argv[]) {
Manto m; // mantojamā klase, kuru var padot apstrādei kodam
// kurš sagaida Galvenaa klasi
m.run(); // izsaucam Galvenaa klase darbiibu, kura izsauks callbacku
return 0;
} |
Parastu C callbacku piemērs:
Code: | #include <stdio.h>
void darbojies(void (f)(int)) {
f(1);
f(2);
}
void callback(int i) {
printf("Esmu callbacks. parametrā i=%i\n",i);
}
int main(int argc, char* argv[]) {
darbojies(callback);
return 0;
} |
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|