クラス内で2次元配列の宣言と同時に初期化

[戻る]
color 2006/12/08(金) 00:45:05
開発環境:VS2005,VC++

クラス内で、2次元配列の宣言と同時に初期化をおこなおうとすると
下記のエラーが出ます。

error C2059: 構文エラー : '{'    
error C2334: '{' の前に予期しないトークンがありました。関数の本体は無視されます
error C2065: 'FIELD_MAP' : 定義されていない識別子です。

宣言と同時に初期化は不可能なのでしょうか?

tetrapod 2006/12/08(金) 09:23:45
どんなコードを書いたのかわからんのでアドバイスのしようがない。
とりあえず妄想してみる。

1.静的配列は初期化できるよ。ただしクラス定義内では静的配列は宣言だけとなるので
--hoge.h--
class hoge {
  static int const table[];
  ...
};
--hoge.cpp--
int const hoge::table[]={ ... };
となる。

2.非静的メンバー配列はデフォルトコンストラクトだけが可能
class piyo {
  int data1[10]={1,2,3...}; // だめ
  int data2[10];
public:
  piyo() /* data2 等はデフォルトコンストラクトされる */ {
    data2[0]=99; data2[1]=12; ... // これは初期化ではなく代入
  }
};

古いスレッドには追加発言できません。