我有以下测试程序(展示了我真正想要完成的事情)。
有谁知道如果没有 reinterpret_cast<> 是否可以实现以下操作?
struct B;
struct A {
A() { }
A( const B &b) { }
A( const B *b) { }
A( B *b) { }
A* operator=(const B *b) { }
A* operator=(B *b) { }
};
struct B {
B() { }
B( const A &a) { }
B( const B * b) { }
B( B *b) { }
B* operator=(const A *a) { }
B* operator=(A *a) { }
};
int main(int argc, char *argv[])
{
A *a = new A();
B *b = new B();
A *c = b;
return 0;
}
我尝试尽我所能做每一个转换运算符,但我似乎无法得到
A *c = b;
不抱怨
error C2440: 'initializing' : cannot convert from 'B *' to 'A *'