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 is the use of header files in C language?
In C language, header files are used to organize and reuse code efficiently 6 Key uses of header files in C language are :1. Function declarations (Prototypes)2. Macro Definitions3. Type Definitions4....
Sachanth
0 0
7
How do I program a game using C program?
Programming a game in C involves several key steps. First, you need to set up a development environment, typically using a compiler like GCC or a specialized game development framework like SDL (Simple...
Sumitha
0 0
6
How can a program be made to print the line number where an error occurs?
The ANSI C standard includes a predefined macro named __LINE__ that can be used to insert the current source code line number in your program. This can be a very valuable macro when it comes to debugging your program and checking for logic errors.
Rituparna
0 0
7
Does a civil engineer need to learn the C language?
C language is a common subject in the first year of engineering irrespective of the branch. It may not be helpful for your civil engineering career but you definitely need to pass for B.Tech graduation.
Sandeep
0 0
5
How can I improve my C language skills so that if anyone asks me any questions about C, I can have the answer to those particular questions?
There are types of questions asked in this sector. 1.Related to Syntax and theoretical. For this you have to have a sound knowledge of the language. 2.Related to programming and output's. For this...
Furqankhan
0 0
5

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

Ask a Question

Related Lessons

C Program-Infinite Loop[For] Demo
//Header Files #include<stdio.h>#include<conio.h> //Main function void main(){ //Function for clearing screen clrscr(); //Infinite for loop for(;;) { printf("Hello!"); } //Function for...

Difference Between C Language and C Program
C Language: C Language is structured, high level and machine independent language. C Program: C Program is the collection of functions that are supported by C library.
S

Shashwat Kumar

0 0
0

Operators in C
Operators in C Operator: An operator is a symbol that tells the compiler to perform certain mathematical or logical calculations. Operators are used in programs to manipulate data and variables. The...

Set 0 To Kth Bit In A Variable
The following code snippet Set 0 to Kth Bit in an variable #include int UnsetBitValue(int n, int k);int main(){ printf("%d\n\n",UnsetBitValue(255,6)); return 0;}// Set kth bit to zeroint UnsetBitValue(int...

Compiler vs Interpreter
Compiler Interpreter Convert all the code into binary format and execute. Convert one statement at a time and execute, then Convert next statement and execute. After conversion, source...

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