Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- on valmiina funktioita process_create, process_find, process_delete jne.
- jotka ottaa parametreinaan aina int argc, char** argv ja Students* s.
- struct commands -rakenteeseen haluut määritellä yleispätevän structin, josta löytyy
- -funktion nimi (eli create, find, delete jne.)
- -yleispätevä funktiopointteri funktioon ks. alla
- esimerkeistä:
- struct monster {
- char *name;
- int hitpoints;
- int (*attack)(struct monster *, struct monster *); // funktiopointteri, jonka perusteella voidaan kutsua esim. punchia tai biteä
- }; // tässä tehtävässä pitää siis asettaa joku (*tunnus)(oikeat parametrit);
- int punch(struct monster *me, struct monster *target) {
- int damage = rand() % 5;
- printf("%s punches %s with %d damage\n", me->name, target->name, damage);
- target->hitpoints -= damage;
- return damage;
- }
- int bite(struct monster *me, struct monster *target) {
- int damage = 20;
- printf("%s bites %s with %d damage\n", me->name, target->name, damage);
- target->hitpoints -= damage;
- return damage;
- }
- int main(void) {
- struct monster goblin = { "goblin", 20, punch }; //luodaan struct monster, jossa name on goblin, hitpointsit 20 ja funktio punch
- struct monster vampire = { "vampire", 10, bite };
- vampire.attack(&vampire, &goblin);
- goblin.attack(&goblin, &vampire);
- // goblin starts biting as well
- goblin.attack = bite; //attack on siis funktiopointterin "tunnus" //(miksiköhän sitä oikeesti pitäis kutsua :DD)
- goblin.attack(&goblin, &vampire);
- }
Advertisement
Add Comment
Please, Sign In to add comment