主题:如何重载operator实现指针类型隐式转换?
代码如下:
class A
{
public:
A() {}
~A() {}
}
class B
{
public:
B(void);
~B(void);
}
main()
{
A* pa = NULL;
B* pb = NULL;
pa = pb; //error,无法将 B* 隐式转换成 A* 。
}
main()函数中,“pa=pb”无法通过编译,当然如果改写成“pa=reinterpret_cast<A*>(pb)”进行显式类型转换是可以通过编译的。
不知道是不是可以通过重载operator的方式进行隐式转换?我尝试了如下两种方式,都不行。
方式一:
class A
{
public:
A() {}
~A() {}
public:
A* operator= (B* pb)
{
return ( reinterpret_cast<A*>(pb) );
}
}
方法二:
class B
{
public:
B(void);
~B(void);
public:
operator A*()
{
return reinterpret_cast<A*>(this);
}
}
请高手指教一下。
class A
{
public:
A() {}
~A() {}
}
class B
{
public:
B(void);
~B(void);
}
main()
{
A* pa = NULL;
B* pb = NULL;
pa = pb; //error,无法将 B* 隐式转换成 A* 。
}
main()函数中,“pa=pb”无法通过编译,当然如果改写成“pa=reinterpret_cast<A*>(pb)”进行显式类型转换是可以通过编译的。
不知道是不是可以通过重载operator的方式进行隐式转换?我尝试了如下两种方式,都不行。
方式一:
class A
{
public:
A() {}
~A() {}
public:
A* operator= (B* pb)
{
return ( reinterpret_cast<A*>(pb) );
}
}
方法二:
class B
{
public:
B(void);
~B(void);
public:
operator A*()
{
return reinterpret_cast<A*>(this);
}
}
请高手指教一下。