C++ または C で構造体 (構造体 | クラス) のメンバーを列挙する方法はありますか? メンバー名、型、および値を取得する必要があります。変数がグローバルにスコープされた小さなプロジェクトで、以前に次のサンプル コードを使用したことがあります。私が今抱えている問題は、一連の値を GUI からオブジェクト、ファイル、および VM 環境にコピーする必要があることです。別の「貧乏人の」リフレクション システムを作成することも、できればまだ考えていないより良いものを作成することもできます。誰か考えがありますか?
編集: C++ にはリフレクションがないことはわかっています。
union variant_t {
unsigned int ui;
int i;
double d;
char* s;
};
struct pub_values_t {
const char* name;
union variant_t* addr;
char type; // 'I' is int; 'U' is unsigned int; 'D' is double; 'S' is string
};
#define pub_v(n,t) #n,(union variant_t*)&n,t
struct pub_values_t pub_values[] = {
pub_v(somemember, 'D'),
pub_v(somemember2, 'D'),
pub_v(somemember3, 'U'),
...
};
const int no_of_pub_vs = sizeof(pub_values) / sizeof(struct pub_values_t);