On Wednesday, 6 February 2019 at 07:38:04 UTC, ezneh wrote:
Thanks for the trick, I'll try it and see how it goes.
Since the class have nothing in them, I just made some "alias
otherclass = baseclass" statements and it seems it is working
(at least it's compiling, have to really test that too). From
what I saw about the code is that those types are just
"placeholders" because they aren't used directly by the API.
It still might be necessary to add empty struct with 'extern(C++,
class)' because alias is, well, just alias, and it needs a real
type because C++ signatures do contains parameters types, and
obviously there will be no methods that accepts derived class so
it will fail to link.
That's what that 'alias this' is for. And since this is not
direct inheritance it will most likely won't work when object
expected to be passed by value (at least not without casting to
void* then to base*, i.e.
'someFunc(*cast(baseclass*)cast(void*)&derivedObj)')