2

私のクラスには、ヘッダーファイル内で次のように定義されたメンバーがあります。

static const vector<note_name> noteMap;

私のソースファイルでは、ベクトルに値を割り当てたいので、試しました:

const vector<note_name> AppSettings::noteMap = {...}

しかし、エラーが発生します: Non-aggregate type 'const vector<note_name>' cannot be initialized with an initializer list。このベクトルを初期化する方法はありますか? 配列の使用はオプションではありません。

4

1 に答える 1

4

vector<note_name>適切な値が入力されたa を返す関数を作成し、その関数を使用して を初期化しますnoteMap。それは常に機能します。初期化子に関する詳細情報があれば、より良い解決策を思いつくことができるかもしれません。または、C++11 を使用している場合は、例のように初期化リストを使用できます。

または、TR1 または Boost または C++11 を使用して、 を に変更vectorarray<note_name>ます。arrayテンプレートは集計の初期化をサポートしています。

于 2012-08-25T15:22:50.117 に答える