C++两个结构体重载运算符处理

我有两个结构体 A和B 需要重载赋值运算符 =,定义的时候只能定义一个。当定义第二个时,就会报错找不到一个结构体的定义。总有一个先定义,另一个无法定义。应该如何定义?

struct A
{
    double P[3];
    double N[3];
    double O[3];
    double A[3];
    A operator=(B value)
    {
        for (int i = 0; i < 3; i++)
        {
            P[i] = value.P[i];
            N[i] = value.N[i];
            O[i] = value.O[i];
            A[i] = value.A[i];
        }
        return *this;
    }
};
struct B
{
    double P[3];
    double N[3];
    double O[3];
    double A[3];
    double ext[7];
    Boperator=(A value)
    {
        for (int i=0;i<3;i++)
        {
            P[i] = value.P[i];
            N[i] = value.N[i];
            O[i] = value.O[i];
            A[i] = value.A[i];
        }
        return *this;
    }
};

img


有可能是这里少了一个空格