現在、アイテム (武器、防具など) をランダムに生成するプログラムに取り組んでおり、アイテムに付けられるすべての名前を保持するグローバルな定数ベクトルを作成したいと考えています。この 2D ベクトルを、他のすべてのクラスで使用できる (ただし変更はできない) ヘッダー ファイルに入れたいので、宣言時に初期化する必要があります。
以前は以下を使用していました。
static const std::string v[] =
{
"1.0", "1.1", "1.2", "null"
};
const std::vector<std::string> versions( v, v+sizeof( v)/sizeof( v[0]));
これは 1D ベクトルでは機能しましたが、2D ベクトルを使用して項目名を保存したいと考えています。
以下を使用してみましたが、メンバー関数 (size() など) がないことを意味します。
static const std::string g_wn_a[] = { "Spear", "Lance", "Jouster" };
static const std::string g_wn_b[] = { "Sword", "Broadsword", "Sabre", "Katana" };
const std::string* g_weapon_names[] = { g_wn_a, g_wn_b };
また、すべての名前を格納するためにクラスを使用したくありません。変数を使用するたびにすべての名前を格納する変数を作成するのは非効率的だと思うからです。
私の問題を解決する方法を知っている人はいますか?