What is the wrong with my C++ interfacing

Arine arine123445128843 at gmail.com
Sun Mar 15 21:16:43 UTC 2020


On Sunday, 15 March 2020 at 20:53:49 UTC, Ferhat Kurtulmuş wrote:
> On Sunday, 15 March 2020 at 20:46:14 UTC, drug wrote:
>> 15.03.2020 23:25, Ferhat Kurtulmuş пишет:
>>> On Sunday, 15 March 2020 at 20:21:57 UTC, drug wrote:
>>>> 15.03.2020 22:39, Ferhat Kurtulmuş пишет:
>>>>>
>>> 
>>>> What is the D version of `createSizeIntWH`? In C++ it 
>>>> returns a pointer but in D version it returns an instance.
>>> 
>>> extern(C++){
>>>      cv.Size_!int createSizeInt();
>>>      cv.Size_!int createSizeIntWH(int w, int h);
>>>      void deleteSizeInt(ref cv.Size_!int sz);
>>> }
>>> 
>>
>> createSizeIntWH returns a pointer to instance, not an 
>> instance. Try:
>> cv.Size_!int* createSizeIntWH(int w, int h);
>
> I doubt it because in 
> https://dlang.org/spec/cpp_interface.html#using_cpp_classes_from_d
>
> cpp code:
> Derived *createInstance(int i)
>
> d code:
> extern (C++){
>     ...
>     Derived createInstance(int i);
> }

I wouldn't use a class on the D side, unless your C++ type uses 
virtual functions. Classes in D are different from structs, it is 
not the same as C++ where they are basically the same thing.


More information about the Digitalmars-d-learn mailing list