#include <iostream>

using namespace std;

class A {    
public:
  int mValue = 0;
};

class B : public A{
public:
  operator A*() { 
    return this;
  }
};

class C {
public:
  operator A*() {
    return new A();
  }
};

int main(int argc, char* argv[])
{
  B* b = new B();
  A* a = b;

  C* c = new C();
  A* aa = *c;
}
