2010-10-23 76 views
0

这是我的代码:OOP,赋值运算符不起作用

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; 
} 

我的问题是,对于地方= XYZ ;,它显示错误“无效使用成员的(你忘了“& '?)“ 和Speed.x = Vx; “没有足够的上下文信息来确定类型”。

回答

2

您的位置,速度和命中率的成员被声明为函数。 使用:

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){} 

,而不是分配。

+0

谢谢。这真的很有帮助。现在它可以工作。 – Tom83B 2010-10-23 13:52:29

+0

@ Tom83B:如果这是帮助您解决问题的答案,那么您可能需要接受它。请参阅[常见问题](http://stackoverflow.com/faq)。 – sbi 2010-10-23 13:58:56

+0

我看到:-)。完成。对不起,我是新来的... – Tom83B 2010-10-23 17:12:21

1

Place是一个取三个floats的成员函数,并且您正试图在构造函数中为其分配它。你不能那样做。也许你意味着PlaceR3类型的数据成员:

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

这些函数的声明:

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

不反对创作。