dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Funkciju Callback

 
dev.gamez.lv Forum Index -> Programmēšana
View previous topic :: View next topic  
Author Message
Guest






PostPosted: 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
Indago Uzvarētājs


Joined: 25 Sep 2003
Posts: 887

PostPosted: 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 Wink
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
Guest






PostPosted: 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

PostPosted: 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
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: 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
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> Programmēšana All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
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