[c언어] C 언어에서의 다중 상속 구현 방법

먼저, Parent1 구조체를 정의하고 해당 구조체에 대한 포인터를 반환하는 함수를 선언합니다.

typedef struct {
    int data1;
} Parent1;

Parent1* CreateParent1(int data1) {
    Parent1* p = malloc(sizeof(Parent1));
    p->data1 = data1;
    return p;
}

그런 다음, Parent2 구조체와 해당 구조체에 대한 포인터를 반환하는 함수를 정의합니다.

typedef struct {
    int data2;
} Parent2;

Parent2* CreateParent2(int data2) {
    Parent2* p = malloc(sizeof(Parent2));
    p->data2 = data2;
    return p;
}

이제, Child 구조체를 정의하고 Parent1, Parent2의 포인터를 멤버로 포함하는 방법으로 다중 상속을 모방할 수 있습니다.

typedef struct {
    Parent1* parent1_ptr;
    Parent2* parent2_ptr;
    int data3;
} Child;

Child* CreateChild(int data1, int data2, int data3) {
    Child* c = malloc(sizeof(Child));
    c->parent1_ptr = CreateParent1(data1);
    c->parent2_ptr = CreateParent2(data2);
    c->data3 = data3;
    return c;
}

다음으로, 부모 구조체에 대한 메모리를 해제하는 함수를 정의합니다.

void DestroyParent1(Parent1* p) {
    free(p);
}

void DestroyParent2(Parent2* p) {
    free(p);
}

마지막으로, Child 구조체에 대한 메모리를 해제하는 함수를 정의합니다.

void DestroyChild(Child* c) {
    DestroyParent1(c->parent1_ptr);
    DestroyParent2(c->parent2_ptr);
    free(c);
}

이러한 방법을 사용하여 C 언어에서 다중 상속을 모방할 수 있습니다. 그러나 이러한 방법은 복잡하고 메모리 관리에 대한 책임이 있다는 단점이 있으므로 주의해서 사용해야 합니다.