グローバル構造体のリストを取得し、同じヘッダー ファイル内から変更されたバージョンを含むベクターを初期化する方法はありますか? .h ファイルはランタイム コードではないため、変数に直接アクセスして編集できないことはわかっていますが、たまたまこれに対する回避策がある可能性があります。 C++ 初心者向けマニュアル.. もしそうなら、私を許してください!
例を作るために、いくつかのメンバーを理解する構造体があり、.h ファイルでいくつかのグローバルなものを宣言したとしましょう..
struct MyStruct
{
unsigned int a;
string foo;
float myfloat;
};
MyStruct struct_one={1,"hello",0.238f};
MyStruct struct_two={10,"salve",3.14f};
MyStruct struct_three={3,"bonjour",0.001f};
MyStruct struct_four={6,"dias",5.0f};
次に、それらを含むベクターをこの方法で初期化できます (ただし、それが最適かどうかはわかりません)。
MyStruct MyStructArray[] = {struct_one, struct_two, struct_three, struct_four};
vector<MyStruct> MyStructVector(MyStructArray,
MyStructArray+sizeof(MyStructArray)/sizeof(MyStructArray[0]));
しかし、グローバルなものを変更せずに、ベクター (または配列) を作成する前に、その場で一部の構造体のメンバーを変更できるようにしたいと考えています。可能?
編集:「ヘッダーファイル内」とは、「ヘッダーファイル内」を意味しました。ヘッダーで行う場合unsigned int a = 100;
、実際のソースで何かを初期化または呼び出して動作させる必要はありません。ベクトル自体は完全に機能します。元のグローバル構造体の変更されたバージョンからそれを構築する方法があるかどうかを知りたかっただけです..たとえば、同じグローバル構造体を使用したいが、 member の値が異なりますa
。