Avatar billede _jepsen_ Nybegynder
26. april 2005 - 19:45 Der er 3 kommentarer og
1 løsning

funktioner i en struktur

Hej eksperter!

Kan jeg på nogen måde lave funktioner inden i en struktur i Ansi C?
Avatar billede arne_v Ekspert
26. april 2005 - 19:50 #1
I C kan du ikke lave funktioner i en struct (men godt i C++ da struct der
reelt er en class).

Imidlertid kan du gemme funktions pointere i en struct og det kan måske
bruges.
Avatar billede arne_v Ekspert
26. april 2005 - 19:56 #2
Jeg lavede engang det her eksempel på objekt orienteret programmering i C:

#include <stdio.h>

struct A
{
  int va;
  void (*f1)(struct A *a);
};

struct B
{
  int va;
  void (*f1)(struct A *a);
  int vb;
};

void constructorA(struct A *a)
{
    a->va = 123;
    a->f1 = NULL;
}

void f1B(struct A *a);

void constructorB(struct B *b)
{
    constructorA((struct A *)b);
    b->f1 = f1B;
    b->vb = 456;
}

void f1B(struct A *a)
{
    printf("%d\n",a->va);
}

void f2(struct B *b)
{
    printf("%d\n",b->vb);
}

int main()
{
    struct B *b = (struct B *)malloc(sizeof(struct B));
    constructorB(b);
    b->f1((struct A *)b);
    f2(b);
    free(b);
    return 0;
}
Avatar billede _jepsen_ Nybegynder
26. april 2005 - 22:48 #3
Vil du ikke være venlig at lægge et svar så du kan få nogle point, det var præcis sådan et eksempel jeg søgte!
Avatar billede arne_v Ekspert
26. april 2005 - 22:50 #4
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester