2011-10-16 4 views
1

この構文で何が問題になっていますか?初心者の質問には申し訳ありません。配列の構文エラー

源:

Level::Level() 
{ 

    NintyDegreeDirections[4] = 
    { 
     (float)(2*(Math.PI)), 
     (float)(3*(Math.PI)/2), 
     (float)Math.PI, 
     (float)Math.PI/2 
    } 

...rest of class 

ヘッダ:

//all necessary includes 

class Level 
{ 
private: 

    static const float NintyDegreeDirections[4]; 

...rest of header 

がどのようにクラスのメンバとして配列を持っていますか? C#から変換中です

+0

コードが(だった場合は、より多くの、より良い答えを得ると思いますa)完全かつコンパイル可能、つまり、「すべてが必要です」などのスニペットはありません。(b)コンパイル時に実際に発生したエラーを記述します。 – thiton

+1

'static'はそれをクラスメンバにします。つまり、インスタンス単位ではなくクラス全体で1回初期化します。コンストラクタで初期化しようとすると、クラスメンバの代わりにインスタンスメンバが必要な場合がありますが、わかりません。 –

答えて

3

静的クラスメンバーをソースファイルで初期化する場合は、関数本体の外で行う必要があります。また、すべてのタイプ情報を定義内に保持する必要があります。例えば。

// In level.cpp, at namespace (global) scope: 
const float Level::NintyDegreeDirections[4] = 
{ 
    (float)(2*(Math.PI)), 
    (float)(3*(Math.PI)/2), 
    (float)Math.PI, 
    (float)Math.PI/2 
}; 

(これはあなたが適切なメンバーPIMath名前空間やクラスが定義されていることを前提としています。MathはC++にネイティブではありません。)