我有两个不同的结构,我想像这样相互转换:
PointI a = PointI(3,5);
PointF b = a;
我认为我需要做类似下面代码的事情:
struct PointF
{
PointF operator=(PointI point){
x = point.x;
y = point.y;
return *this;
}
float x, y;
};
struct PointI
{
PointI operator=(PointF point)
{
x = point.x;
y = point.y;
return *this;
}
int x, y;
};
但问题是PointF
在声明之前使用PointI
。从我在其他问题中读到的内容来看,我理解在定义两个结构之前我可以声明PointI
,然后使用指针。虽然我似乎无法从该指针访问变量x
和y
,因为这些尚未定义。
有没有办法在定义它们之前将这些变量添加到struct声明中?或者有更好的方法来解决这个问题吗?
答案 0 :(得分:8)
首先,forward声明其中一个结构并完全声明另一个结构。您需要为前向声明类型使用引用或指针,因为编译器还没有它的定义:
Other
接下来,您需要完全声明您声明的结构:
UIActivityViewController
现在,您可以继续为每个函数定义struct PointI;
struct PointF
{
PointF operator=(const PointI& point);
float x, y;
};
函数:
struct PointI
{
PointI operator=(const PointF& point);
int x, y;
};
请注意,您应该更改operator=
函数以返回引用而不是副本,但这超出了此问题/答案的范围。