私は次のテストプログラムを持っています (私が実際に達成しようとしていることを示しています)。
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 *'