#include <iostream>
 
using namespace std;
 
class Interface
{
public:
        virtual void print() = 0;
};
 
class Derived : public Interface
{
public:
        virtual void print()
        {
                std::cout << "Derived" << std::endl;
        }
};
 
class PossessDerived
{
public:
        Interface * getPossession()
        {
		// Gib Interface-Zeiger auf polymorphes Objekt zurück
                return static_cast<Interface *>(&d);
        }
 
private:
        Derived d;
};
 
int main(int argc, char * argv[])
{
        PossessDerived p;
 
        p.getPossession()->print();
 
        return 0;
}
 