Obtenir le nom et le type de structure du champ de son objet
Par exemple, j'ai une structure qui est quelque chose comme ceci:
struct Test
{
int i;
float f;
char ch[10];
};
Et j'ai un objet de cette structure comme:
Test obj;
Maintenant, je veux obtenir par programme les noms de champ et le type de obj
. Est-il possible?
C'est le C++ BTW.
- Que feriez-vous avec le nom si vous pouviez l'obtenir?
- Ont pour générer des fichiers basé sur le code. Nous pouvons, offcourse, d'analyser les fichiers de code source, mais j'ai été à la recherche pour certains de solution élégante qui, paraît-il, n'existe pas 🙁
Vous devez vous connecter pour publier un commentaire.
Vous demandez La réflexion en C++.
Je crains que vous ne pouvez pas obtenir les noms des champs, mais vous pouvez obtenir le type d'obj à l'aide de Coup de pouce.Typeof:
Non ce n'est pas possible sans l'écriture de votre propre "struct" du système. Vous pouvez obtenir le sizeof d'un membre, mais vous devez connaître son nom. C++ ne permet pas, à ma connaissance, à énumérer lors de la compilation ou de l'exécution les membres d'un objet donné. Vous pourriez mettre un couple de fonctions telles que "GetNumMembers()" et "GetMemberSize( index )", etc pour obtenir les informations que vous êtes après ...
Vous pouvez aussi faire une recherche sur le web pour des "C++ sérialisation", en particulier la
Boost
bibliothèques. J'avais également effectuer une recherche de Dépassement de Pile pour "C++ sérialisation".Beaucoup de C++ débutants voudrais créer des instances d'objet à partir d'un nom de classe ou de remplir les champs de la classe basés sur des noms. C'est là que la Sérialisation ou de la Désérialisation est très pratique.
Mon expérience devoir de classe et les noms des membres de l'impression des informations de débogage. De classe et les noms de champ serait utile lors de la manipulation des exceptions, en particulier les générer.