dmd/compiler/test/runnable_cxx/extra-files/cppb.h
2022-07-09 18:53:07 +02:00

83 lines
1.4 KiB
C++

// avoid declaration in cpp file so the C/C++ compiler does no assume
// these are inaccessible from elsewhere
class Cpp15589Base
{
public:
~Cpp15589Base();
virtual void nonVirtual() {}
int a;
};
class Cpp15589Derived : public Cpp15589Base
{
public:
Cpp15589Derived();
~Cpp15589Derived();
int b;
};
class Cpp15589BaseVirtual
{
public:
virtual void beforeDtor() {}
Cpp15589BaseVirtual();
virtual ~Cpp15589BaseVirtual();
virtual void afterDtor() {}
int c;
};
class Cpp15589DerivedVirtual : public Cpp15589BaseVirtual
{
public:
Cpp15589DerivedVirtual(); // explicit C++ ctor needed, see https://issues.dlang.org/show_bug.cgi?id=18966
virtual ~Cpp15589DerivedVirtual();
virtual void afterDtor() {}
int d;
};
class Cpp15589IntroducingVirtual : public Cpp15589Base
{
public:
Cpp15589IntroducingVirtual();
virtual void beforeIntroducedVirtual() {}
virtual ~Cpp15589IntroducingVirtual();
virtual void afterIntroducedVirtual(int) {}
int e;
};
struct Cpp15589Struct
{
~Cpp15589Struct();
int s;
};
class Base18966
{
public:
Base18966();
virtual ~Base18966();
virtual void vf();
int x;
};
class A18966
{
public:
char calledOverloads[8];
int i;
A18966();
virtual void foo();
};
class B18966 : public A18966
{
public:
B18966();
void foo() /*override*/;
};