typedef struct _A A; typedef struct _A B; void some_function(B *b); class AClass { public: operator A*() { return 0;} }; class BClass :public AClass { public: operator B*() { return 0;} }; int main(int argc, char **argv) { BClass b; some_function(b); }