On Thursday, 17 December 2015 at 03:31:37 UTC, Jeremy DeHaan
wrote:
Hi all. I'm interfacing to some C code which include an opaque
type and some C functions that create and work with a pointer
to that type. I want to wrap up everything in a struct, and the
only thing that seems to bug me is initialization.
Since it is C code, I obviously can't read the function that
creates the opaque type. Not only that, I can't define a
default constructor. What are my options here?
This is for an API that is intended to be used by people other
than myself, so I'd like to use something that doesn't look
ugly or isn't a hack. I really don't like the idea of using a
factory method or overriding opCall. Am I basically out of luck
and need to resort to one of these methods?
Using a factory function alongside @disable this(); is the
canonical way to do this. Although, if your struct is a reference
type, you can simply allow default construction and have it mean
a null reference.
Using static opCall here is just a factory function with special
syntax, but I think it does more harm than good.