DEV Community

Trinity
Trinity

Posted on

OOP in C

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct Bank {
    struct Bank* this;
    int num_customers;
    int rating;
    char* address;
    float reserve_amt;
    void(* deposit)(struct Bank*, float);
    void(* withdraw)(struct Bank*,float);
    void(* change_address)(struct Bank*, char*);
    void(* customer_enter)(struct Bank*);
    void(* customer_exit)(struct Bank*);
} Bank;

void deposit(struct Bank* bank, float amt);
void withdraw(struct Bank* bank, float amt);
void customer_enter(struct Bank* bank);
void customer_exit(struct Bank* bank);
Bank* create_bank(char* address);

int main() {
    Bank* bank = create_bank("2424 Blackwater Street");
    bank->deposit(bank, 15);
    bank->withdraw(bank, 13);
    printf("The total is %f\n", bank->reserve_amt);
}

Bank* create_bank(char* address) {
    Bank* b = calloc(1, sizeof(Bank));
    b->this = b;
    b->num_customers = 0;
    b->rating = 0;
    b->address = calloc(strlen(address)+1, 1);
    memcpy(b->address, address, strlen(address)+1);
    b->reserve_amt = 0;
    b->withdraw = withdraw;
    b->deposit = deposit;
    b->customer_enter = customer_enter;
    b->customer_exit = customer_exit;
    return b;
}

void deposit(struct Bank* bank, float amt) {
    bank->reserve_amt += amt;
}

void withdraw(struct Bank* bank, float amt) {
    bank->reserve_amt -= amt;
}

void customer_enter(struct Bank* bank) {
    return;
}
void customer_exit(struct Bank* bank) {
    return;
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)