我有两个我无法修改的类,它们都具有完全相同的成员:
class Pose1 {
public:
double x,y;
};
class Pose2 {
public:
double x,y;
};
一部分代码使用 Pose1,另一部分使用 Pose2。有没有办法将它们相互隐式转换?现在我必须一直写
Pose1 p1(0.5, 0.5);
Pose2 p2(p1.x,p2.y);
我知道我可以编写一个只执行一次的转换函数。但是我有很多不同的类型和很多参数。
有什么办法可以做类似的事情:
Pose2 p2 = static_cast<Pose2>(p1);
我无法使用成员函数,因为我无法更改此代码。
谢谢!
最佳答案
试试这个:
template <class Dest, class Src>
Dest pose_cast(const Src &src)
{
return Dest(src.x, src.y) ;
}
用法:
Pose1 p1 ;
Pose2 p2 = pose_cast<Pose2, Pose1>(p1)
适用于两种转化。
关于c++ - 非成员(member)转换,不同类型同成员(member),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30399069/