关于强制转换操作符的问题
有如下代码
class vertex
{ float x,y,z;};
class mvertex : public vertex
{
operator vertex()
{
swap( y, z );
return vertex( x, z, y );
}
operator vertex&()
{
swap( y, z );
return (vertex&)*this;
}
operator const vertex&()
{
swap( y,z )
return (const vertex&)*this;
}
mvertex& operator=( const vertex& a );
}
vertex operator+( const vertex& a, const vertex& b );
然后有如下调用
mvertex a,b;
a = a + b;//这里总是调用上面定义的这个operator+,而没有调用强制转换操作符
operator const vertex&(), 因此,这里的得到的结果总是错的.
为什么会产生这样的问题呢?