You really want to go there?Well, I would love to hear your expert opinion about my errors. You owe it to those newbies who would otherwise be damanged by my incompetence. As a matter of interest, do you have any qualifications? I would love to know what/where you studied that set the foundation for the insights you have been sharing with us in this thread.
No not the same. In C++ you do not set it. It's automatically tied to the function for you and except in the case of virtual functions is not kept in the class.Same as C++, just choose a named method table, in the same way as you would name an instance's class. This can be generated by an object factory or constructor function.
OMG can't believe you're this clueless. -> has nothing to do with member pointers or virtual functions. It dereferences a pointer to an object and not pointers in objects. For that you have to use either .* or ->*Same as C++ for virtual functions. If the -> syntax offends you, it can easily be wrapped in a method that takes the object as a parameter.
They aren't. You have to explicitly feed it the object where OOP automatically feeds a pointer to it.Of course they're tied together, the method only operates on objects of that type (determined by the first parameter usually). In C++ this parameter is just in a different place.
C doesn't support inheritance. Do you even know what that is?Of course there is inheritance (just create a function table which is a copy of the old one and overwrite the methods you want to change, and ignore the the methods you want to inherent). You don't need object containment either, a simple set of macros containing attribute lists will allow you to define inheritance in much the same way as C++.
Yes you have to manually set (update) it. More opportunity for error.Update function pointer? Why would that be necessary - only the table pointer needs to be set per object, same as C++.
Get this is your head, C doesn't have an OO syntax because it has no support for OOP. Yes OOP is a paradigm and C doesn't support that paradigm. You can shout from the rooftops and keep waving your arms that it does but the world disagrees with YOU. What you are using is just procedural programming and by the sound of it a very ugly version of it that leaves ample room for errors.No, that is the point of C++/Java/C#/etc. OOP is a paradigm - being "behind the scenes" has nothing to do with using the paradigm - you can shout that this isn't so from the rooftops all you want, but the world disagrees with you. I've worked in several OO C code bases before, and there is no conceptual difference to the model, and from the caller/API user's perspective, the syntax is actually pretty damn clean. No, overall I don't think C's OO syntax is particularly awesome, but fortunately I know the difference between syntax and semantics.