News for hackers. Stuff that matters.
Re:OOP in C by wheelerof4te on Sunday January 08, 2023 @06:53AM (#34298328)
"int string_length(void * self) { return ((int ()(void ))((object *)self)->class->vtable[STRING_LENGTH_SLOT])(self);"

Oh.My.God.

At this point, you might as well be using Java.

Re:OOP in C by vidarh on Sunday January 08, 2023 @07:07AM (#34298406)
If you're writing C, you'll be writing much worse than that on a regular basis. There's a reason I rarely use C any more.

But of course if you're going to reimplement OO from scratch in C you will see the entire machinery laid bare. You're only doing it in the first place either because you're committed to using C for whatever reason, or to understand OO implementation strategies.

Re:OOP in C by vidarh on Sunday January 08, 2023 @09:41AM (#34299461)
Replying to myself to leave this here, since it's vaguely related. If anyone really want to have nightmares about OO'ish concepts in C, here is a few different ways to implement closures in C, going from relatively straightforward, to (unportable) runtime generation of assembler thunks:

https://hokstad.com/how-to-implement-closures

Re:OOP in C by rramadass on Sunday January 08, 2023 @07:02AM (#34298380)
You are just being glib here.

If you want simpler models see my other comments in this thread.

Re:OOP in C by Shorel on Sunday January 08, 2023 @09:01AM (#34299149)
Or C++

/gasp