OOP,赋值运算符不起作用

时间:2010-10-23 13:38:33

标签: c++

这是我的代码:

struct R3
{
       float x;
       float y;
       float z;

       R3(float, float, float);
       R3();
};

R3::R3(float a, float b, float c)
{
        x = a;
        y = b;
        z = c;
}

R3::R3()
{
        x = 0;
        y = 0;
        z = 0;
}

struct Bodies
{
       int Mass;
       float Dist[100];
       R3 Place(float, float, float);
       R3 Speed(float, float, float);
       R3 Acc(float, float, float);

       Bodies(int, R3, R3, R3);
};

Bodies::Bodies(int M, R3 XYZ, R3 V, R3 A)
{
       Mass = M;
       Place = XYZ;
       Speed.x = V.x;
       Speed.y = V.y;
       Speed.z = V.z;
       Acc.x = A.x;
       Acc.y = A.y;
       Acc.z = A.z;
}

我的问题是,对于Place = XYZ;,它显示错误“无效使用成员(你忘了'&'?)” 并且对于Speed.x = V.x; “确定类型的上下文信息不足”。

3 个答案:

答案 0 :(得分:2)

您的Place,Speed和Acc成员被宣布为职能。 使用:

struct Bodies
{
       int Mass;
       float Dist[100];
       R3 Place;
       R3 Speed;
       R3 Acc;

代替。

并在构造函数中使用初始化:

Bodies::Bodies(int M, R3 XYZ, R3 V, R3 A): Mass(M), Place(XYZ), Speed( V ), Acc( A ){}

而不是分配。

答案 1 :(得分:1)

Place是一个带有三个floats的成员函数,您试图在构造函数中赋值给它。你不能这样做。也许您的意思是Place成为R3类型的数据成员:

struct Bodies
{
    ...
    R3 Place;
    R3 Speed;
    ...
};

答案 2 :(得分:0)

这些是函数声明:

R3 Place(float, float, float);
R3 Speed(float, float, float);
R3 Acc(float, float, float);

不是对象创作。