Is D so powerfull ??
    Daniel Murphy via Digitalmars-d 
    digitalmars-d at puremagic.com
       
    Sun Nov  8 23:00:46 PST 2015
    
    
  
On 9/11/2015 5:54 PM, Jeremy DeHaan wrote:
>>
>> Didn't you say constructors and destructors are missing? What should
>> one do in those cases?
Constructors and destructors do not match the C++ ABI, but they are 
still generated, so they can only be called from the language they were 
written in.  So if you write your classes in D you must new and delete 
(or GC) them from D.  You can still create them from C++ (or create 
C++-written classes from D) if you use a forwarding function:
X makeX() { return new X(); }
>
> Additionally, should we use new in this case? Wouldn't new create a
> pointer to a C++ class? Or does it work differently for extern(c++)
> classes?
New in D will allocate a class instance on the GC heap and return a 
reference to it, just like when it's used with D classes.
These two functions have the same ABI:
// D
extern(C++) class X {}
extern(C++) void func(X x);
// C++
class X {}
void func(X *x);
You can find several examples of C++ interop in dmd's test\runnable\cppa.d
    
    
More information about the Digitalmars-d
mailing list