gpt4 book ai didi

c++ - 非成员(member)转换,不同类型同成员(member)

转载 作者:太空狗 更新时间:2023-10-29 23:44:26 27 4
gpt4 key购买 nike

我有两个我无法修改的类,它们都具有完全相同的成员:

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com