我有以下测试程序(展示了我真正想要实现的内容)。
是否有人知道在没有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 *'
B
继承 自A
,否则指针转换就没有什么实际意义。 - Kerrek SB