分類:[C/C++]
2009/09/10(Thu) 16:14:52 編集(投稿者)
C++の構造体のコンストラクタについて質問です。
下のコードはコンパイルが通ります。
struct Tbl{
int type;
int valTbl[10];
};
static const Tbl tbl[] = {
{1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
{2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
{3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
};
ただ、C++のなるべく初期化しましょうという原則に従い、
悔い改めて、構造体にデフォルトコンストラクタを追加すると
初期化リストの引数の数が違うというコンパイルエラーが
出ます。
struct Tbl{
int type;
int valTbl[10];
/** デフォルトコンストラクタ */
Tbl() : type(0) {
memset(valTbl, 0, sizeof(int)*_ARRAYSIZE(valTbl));
}
};
static const Tbl tbl[] = {
{1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
{2, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
{3, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9},
};
こんな場合、どういう風に対処しますか?
教えてください。