On Monday, 24 May 2021 at 17:39:38 UTC, Gavin Ray wrote:
On Sunday, 23 May 2021 at 21:08:06 UTC, Ola Fosheim Grostad
wrote:
On Sunday, 23 May 2021 at 21:02:31 UTC, Gavin Ray wrote:
I don't really know anything at all about compilers or
low-level code -- but is there any high-level notion of
"inheritance" after it's been compiled?
Yes, in the structure of the vtable, which is why the spec is
so hard to read.
If possible stick to single inheritance in C++...
Yeah agreed, multiple inheritance is asking for trouble.
But unfortunately when you're binding to existing libraries you
don't have control over the API
Hence why I was asking how to make D structs/classes that have
compatible or identical vtables to multiply inherited objects
to pass as arguments to `extern (C++)` functions.
Also general explanation of what makes a compiled variable
compatible in terms of vtable with what's expected as an
argument
I'd be grateful for solid information on this
AFAIK multiple inheritance is described in this book
https://www.amazon.com/Inside-Object-Model-Stanley-Lippman/dp/0201834545
Multiple inheritance is a rare topic here, I doubt too many
people know how it works internally.
Java and COM stuck on single-inheritance because it gives you 99%
bang for the buck, also v-table dispatch in case of multiple
inheritance is not as straightforward.