1 Pluspunkt 0 Minuspunkte

Wenn ich in C eine Klasse simuliere

#include <stdio.h>

typedef struct {
    int num;
    void (*someMethod)(void);
} Test;

void hellofunction(void) {
    printf("hello");
}

void worldfunction(void) {
    printf("world");
}

int main(void) {

    Test test;
    test.num = 13;
    test.someMethod = hellofunction;
    test.someMethod();
    test.someMethod = worldfunction;
    test.someMethod();

}

Wo ist dabei aber die Verbingung zu den Eigenschaften der Klasse so wie z.B

void numfunction(void) { 
    printf(this.num); 
}
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Um etwas wie this zu simulieren, könntest du den Zeiger auf die Struktur selbst als Argument an die Methode übergeben.

#include <stdio.h>

typedef struct Test {
    int num;
    void (*numfunction)(struct Test*); // Funktionszeiger mit Zugriff auf die Instanz
} Test;

void numfunction(struct Test* self) {
    printf("Num: %d\n", self->num); // Zugriff auf die Instanzdaten
}

int main(void) {
    Test test;
    test.num = 42;
    test.numfunction = numfunction; // Methode zuweisen
    test.numfunction(&test); // Methode mit Instanz aufrufen
    return 0;
}
von (1.0k Punkte)