class B;

class A
{
    protected:
        int a;
    public:
        operator B*()
        {
            throw("Bad Type Overload");
        }
};
class B:public A
{
 protected:
    int b;
};
int main()
{
    A *a = new A();
    B *b;
    b=(B*)a;
    return 0;
}