Lorsque j'ai besoin pour obtenir le nom de classe à l'intérieur d'une de ses méthodes que j'appelle simplement:obtenir le nom de classe variable de type int statique avec typeid (* cela) .name pour sa propre définition - C++
typeid(*this).name()
(puis Je scinde le résultat en jetons et récupère le nom de la classe)
Maintenant, je dois définir une variable membre statique et avoir besoin du nom de la classe pour cela. Mais je ne suis pas dans une méthode! Donc, je ne peux pas utiliser (* ceci).
Au départ, je pensais que je pouvais faire quelque chose comme:
#define INIT_STAT_VAR
const char * cname = typeid(*this).name;
int cname##::var = 1;
Toute idée comment je pourrais obtenir le nom de la classe pour la définition de la variable membre statique? (non, je ne peux pas écrire directement le nom de la classe pour la définition;])
merci!
Peut-être pourriez-vous expliquer a) ce que vous faites avec le nom de la classe b) pourquoi vous ne pouvez pas le coder en dur? Aussi, savez-vous que ce que vous faites est intrinsèquement non portable? –
a. Je voudrais imprimer le nom de la classe et le nom de la méthode (__FUNCTION__) à chaque fois que la méthode (qui a le #define implémenté) a été appelée b. Je veux implémenter ceci dans tout le code que je fais, et le code devrait seulement être intégré quand je le veux ainsi. Je voudrais juste mettre le symbole #define dans les méthodes pertinentes. c. mmm ... n'a pas d'importance, c'est juste pour mon travail interne, le code final n'a pas besoin d'avoir mis en œuvre. – sciloop
euh, je voulais écrire la macro predefind avec les deux traits de soulignement avant et après FUNCTION dans la ligne un, mais cela a été changé en (FUNCTION) – sciloop