C++ / Wrong function signature generated for reference parameter

Rubn where at is.this
Thu May 3 02:23:27 UTC 2018


On Wednesday, 2 May 2018 at 21:55:31 UTC, Robert M. Münch wrote:
> I have the following C++ function signature:
>
> 	uint _begin(Image& image, const InitParams* initParams)
> and the following D code:
>  class InitParams {
>  }
>  class B2D {
>    uint _begin(ref Image image, InitParams initParams);
>  }
> But this compiles to the following signature which is not found 
> by the linker:
> public: virtual unsigned int __cdecl 
> b2d::Context2D::_begin(class b2d::Image * &,class 
> b2d::InitParams *)
> I don't understand why "ref Image" translates to "Image * &" 
> and not "Image &". How can I get the C++ reference function 
> signature written down in D?

If "Image" is a class then all classes are based as pointers to 
their respective object. So passing a ref to a class is kind of 
redundant. You want to use a struct which isn't passed by 
pointer, but by value. Which will then give you the signature you 
want.


More information about the Digitalmars-d-learn mailing list