有两个结构在C ++中引用彼此的变量

时间:2015-06-08 16:07:19

标签: c++ struct

我有两个不同的结构,我想像这样相互转换:

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,然后使用指针。虽然我似乎无法从该指针访问变量xy,因为这些尚未定义。

有没有办法在定义它们之前将这些变量添加到struct声明中?或者有更好的方法来解决这个问题吗?

1 个答案:

答案 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=函数以返回引用而不是副本,但这超出了此问题/答案的范围。