2010-10-23 127 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); 

不反對創作。