+++ /dev/null
-// prms-id: 16146
-
-extern "C" int printf (const char *, ...);
-
-class myFoundation {
-protected:
- myFoundation () { count = 0; };
- virtual ~myFoundation () {};
-
-public:
- void addRef () { ++count; }
- void removeRef () { if (count > 0) --count; }
-
-private:
- long count;
-};
-
-
-class firstIntermediate :virtual public myFoundation {
-public:
- firstIntermediate () {};
- ~firstIntermediate () {};
-
- void bar () { printf ("Bar\n"); }
-};
-
-
-class firstBase : public firstIntermediate {
-public:
- firstBase () {};
- ~firstBase () {};
-
- virtual void g () {};
-};
-
-
-class secondIntermediate : virtual public myFoundation {
-public:
- secondIntermediate () {};
- ~secondIntermediate () {};
-
- virtual void h () {};
-};
-
-
-class secondBase : public secondIntermediate {
-public:
- secondBase () {};
- ~secondBase () {};
-
- virtual void h () {};
-};
-
-
-class typeInterface : virtual public firstBase {
-public:
- typeInterface () {};
- ~typeInterface () {};
-
- virtual void i () {};
-};
-
-class classServices : virtual public firstBase,
- public secondBase {
-public:
- classServices () {};
- ~classServices () {};
-
- virtual void j () {};
-};
-
-class classImplementation : public typeInterface,
- public classServices {
-public:
- classImplementation () {};
- ~classImplementation () {};
-
- void g () {};
- void h () {};
- void i () {};
- void j () {};
-};
-
-int main () {
- firstBase* fbp = new classImplementation;
- classImplementation* cip = dynamic_cast <classImplementation*> (fbp);
- cip->addRef();
- myFoundation* mfp = cip;
-}