I saw this video on Youtube. How to do a class in plain C code. https://youtu.be/v-8X53D8CN8?t=307
So I tried this.
struct{
/* Skapa en variabel och getter-setter */
int minVariabel;
void (*setMinVariable)(minKlass*, int);
int (*getMinVariable)(minKlass*);
};
And now I get an error beacuse minKlass
is not declared.
Then I tried this.
typedef struct{
/* Skapa en variabel och getter-setter */
int minVariabel;
void (*setMinVariable)(minKlass*, int);
int (*getMinVariable)(minKlass*);
}minKlass;
Same here. The structure minKlass
is still not declared. So how did he make this work in the video?
This is the solution for creating a class in C.
#include <stdio.h>
typedef struct minKlass minKlass;
struct minKlass{
/* Skapa en variabel och getter-setter */
int minVariabel;
void (*setMinVariable)(minKlass*, int);
int (*getMinVariable)(minKlass*);
};
minKlass* minKonstruktor(minKlass* this){
/* Skapa getter-funktion */
int getMinVariableFunktion(minKlass* this){
return this->minVariabel;
}
/* Skapa setter-funktion */
void setMinVariableFunktion(minKlass* this, int variabel){
this->minVariabel = variabel;
}
/* Applicera dessa till pekarfunktionen i klassen */
this->setMinVariable = setMinVariableFunktion;
this->getMinVariable = getMinVariableFunktion;
/* Retunera adressen av våran nya klass */
return this;
}
int main(){
/* Skapa två klasser */
minKlass klass1;
minKlass klass2;
/* Passera klassen igenom konstruktören */
minKlass* pKlass1 = minKonstruktor(&klass1);
minKlass* pKlass2 = minKonstruktor(&klass2);
/* Sätt ett värde till klassen */
pKlass1->setMinVariable(pKlass1, 104);
pKlass2->setMinVariable(pKlass2, 23);
/* Ta ett värde från klassen */
int minVariabel1 = pKlass1->minVariabel;
int minVariabel2 = pKlass2->minVariabel;
/* Skriv ut värdet */
printf("minVariabel1 = %i, minVariabel2 = %i\n", minVariabel1, minVariabel2);
return 0;
}