How do I use structs in C to emulate classes?

Asked by Last Modified  

Follow 3
Answer

Please enter your answer

Follow below example program: typedef struct object object, *setCoordinates; struct object { float x, y; void (*setCoordinates)(object *self, float x, float y); void (*getYCoordinate)(object *self); void (*getXCoordinate)(object *self); }; void object_setCoordinates(object...
read more
Follow below example program: typedef struct object object, *setCoordinates; struct object { float x, y; void (*setCoordinates)(object *self, float x, float y); void (*getYCoordinate)(object *self); void (*getXCoordinate)(object *self); }; void object_setCoordinates(object *self, float x, float y){ self->x = x; self->y = y; } float object_getXCoordinate(object *self){ return self->x; } float object_getYCoordinate(object *self){ return self->y; } object point; point.setCoordinates = object_setCoordinates; point.getYCoordinate = object_getYCoordinate; point.getXCoordinate = object_getXCoordinate; point.setCoordinates(&point, 1, 2); printf("Coordinates: X Coordinate: %f, Y Coordinate: %f", point.getXCoordinate, point.getYCoordinate); read less
Comments

Tutor

Classes are structures with a hidden pointer to a table of function pointers called VTable. The Vtable itself is static. When types point to Vtables with the same structure but where pointers point to other implementation, you get polymorphism. It is recommended to encapsulate the calls logic in function...
read more
Classes are structures with a hidden pointer to a table of function pointers called VTable. The Vtable itself is static. When types point to Vtables with the same structure but where pointers point to other implementation, you get polymorphism. It is recommended to encapsulate the calls logic in function that take the struct as parameter to avoid code clutter. You should also encapsulate structures instantiation and initialization in functions (this is equivalent to a C++ constructor) and deletion (destructor in C++). These are good practice anyway. typedef struct { int (*SomeFunction)(TheClass* this, int i); void (*OtherFunction)(TheClass* this, char* c); } VTable; typedef struct { VTable* pVTable; int member; } TheClass; To call the function int CallSomeFunction(TheClass* this, int i) { (this->pVTable->SomeFunction)(this, i); } read less
Comments

Related Questions

What will the pre-processor do for a program?
The pre processor takes a look at your source code just before it goes off to the compiler, does a little formatting, and carries out any instructions you have given it. Each # command that the preprocessor...
Neel
0 0
6
What is C? Where it is used ?
C has the advantage that it is a relatively small language, which makes it easy to implement a C compiler (whereas a C++ compiler is a monster to write), and makes it easier to learn the language. C...
Chandi
What is the error in the given C language program?
Common errors in C programs include syntax errors (typos, missing semicolons, incorrect use of operators), logical errors (flawed algorithms or incorrect conditional statements), and runtime errors (memory...
Suresh
0 0
5
What are the functions in C programming?
In C programming, functions are essential building blocks that allow for modular and structured code. A function is a self-contained block of code designed to perform a specific task. It typically takes...
Kiran
0 0
6

Now ask question in any of the 1000+ Categories, and get Answers from Tutors and Trainers on UrbanPro.com

Ask a Question

Related Lessons

Java and C trainer
Always think any conspect with real-time example like Object -- object must have states and behaviour then only we will call that thing is Object like fan is Object (rotating,color)

Do You Know How Is Size Of Structure Defined?
Size of the structure is defined based on multiplies of bigger data type member in the structure. Example: If a structure contains integer, char, short data type, then size of the Structure will be multiples...

Necessity of Theory and Practical in Computer Science.
Upon studying a subject both theory and practical are important. Usually many schools concentrate more on theory and the marks not on the practical. Other and opposite kind of people prefer practical...

C Program-Vowels and Consonants
/*WAP to print the character entered by user is a vowel or consonant*/ //Header files #include<stdio.h>#include<conio.h> //Main functionvoid main(){ char c; //Function for clearing screen...

Why we need to learn Programming languages?
Language is medium for communication. If two parties like to communicate or exchange the thoughts they must know a language. Language should be understandable by both the Parties. For example A wants to...

Recommended Articles

Lasya Infotech is a Hyderabad based IT training institute founded in 2016 by O Venkat. Believing in his innovation, passion and persistence and with a diverse blend of experience, he started his brainchild to deliver exemplary professional courses to aspiring candidates by honing their skills. Ever since the institute envisions...

Read full article >

Brilliant Academy is one of the reputed institutes for B.Tech tuition classes. This institute is specialised in delivering quality tuition classes for B.E, Engineering - all streams and Engineering diploma courses. Incorporated in 2012, Brillant Academy is a brainchild of Mr Jagadeesh. The main motto of the academy is to...

Read full article >

Applications engineering is a hot trend in the current IT market.  An applications engineer is responsible for designing and application of technology products relating to various aspects of computing. To accomplish this, he/she has to work collaboratively with the company’s manufacturing, marketing, sales, and customer...

Read full article >

Microsoft Excel is an electronic spreadsheet tool which is commonly used for financial and statistical data processing. It has been developed by Microsoft and forms a major component of the widely used Microsoft Office. From individual users to the top IT companies, Excel is used worldwide. Excel is one of the most important...

Read full article >

Looking for C Language Classes?

Learn from the Best Tutors on UrbanPro

Are you a Tutor or Training Institute?

Join UrbanPro Today to find students near you