[Issue 15626] extern(C++) calling crash

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sat Jan 30 00:15:06 PST 2016


https://issues.dlang.org/show_bug.cgi?id=15626

--- Comment #2 from Walter Bright <bugzilla at digitalmars.com> ---
Stripping away the unnecessary template and complex names:

---------- D -----------------
extern(C++)
{
    class C { }

    interface I
    {
        void f();
    }

    abstract class Base : I
    {
        int instance;
    }

    void test(Base b)
    {
        b.f();
    }

    void mainx();
}

int main()
{
    mainx();
    return 0;
}

------------- C++ ------------
#include <stdio.h>

class C { };

class I
{
    virtual void f() = 0;
};

class Base : public I
{
  public:
    int pInstance;

    Base() { pInstance = 0xBAADF00D; }
};

class Derived : public Base
{
  public:
    void f() { printf("!!"); }
};

void test(Base *b);

void mainx()
{
    Derived *d = new Derived;
    test(d);
}

--


More information about the Digitalmars-d-bugs mailing list