Dead
[official-gcc.git] / gomp-20050608-branch / gcc / testsuite / g++.old-deja / g++.mike / p16146.C
blob733e5ec7f3c390a46958013e6b6b573054d602b6
1 // { dg-do run  }
2 // prms-id: 16146
4 extern "C" int printf (const char *, ...);
6 class myFoundation {
7 protected:
8   myFoundation () { count = 0; };
9   virtual ~myFoundation () {};
11 public:
12   void addRef () { ++count; }
13   void removeRef () { if (count > 0) --count; }
15 private:
16   long count;
20 class firstIntermediate :virtual public myFoundation {
21 public:
22   firstIntermediate () {};
23   ~firstIntermediate () {};
25   void bar () { printf ("Bar\n"); }
29 class firstBase :  public firstIntermediate {
30 public:
31   firstBase () {};
32   ~firstBase () {};
34   virtual void g () {};
38 class secondIntermediate : virtual public myFoundation {
39 public:
40   secondIntermediate () {};
41   ~secondIntermediate () {};
43   virtual void h () {};
47 class secondBase : public secondIntermediate {
48 public:
49   secondBase () {};
50   ~secondBase () {};
52   virtual void h () {};
56 class typeInterface : virtual public firstBase {
57 public:
58   typeInterface () {};
59   ~typeInterface () {};
61   virtual void i () {};
64 class classServices : virtual public firstBase,
65                       public secondBase {
66 public:
67   classServices () {};
68   ~classServices () {};
70   virtual void j () {};
73 class classImplementation : public typeInterface,
74                             public classServices {
75 public:
76   classImplementation () {};
77   ~classImplementation () {};
79   void g () {};
80   void h () {};
81   void i () {};
82   void j () {};
85 int main () {
86   firstBase* fbp = new classImplementation;
87   classImplementation* cip = dynamic_cast <classImplementation*> (fbp);
88   cip->addRef();
89   myFoundation* mfp = cip;