OVH Cloud OVH Cloud

Fabriquer un nom dans une macro

2 réponses
Avatar
Xavier Decoret
Bonjour,

Pour toute mes classe, je definis un shared_pointer de la facon suivante:

typedef shared_ptr<Type> PtrType;

J'aimerais pouvoir remplacer cette ligne par une macro du genre:

#define DEFINE_SHARED_POINTER(T) typedef shared_ptr<T> PtrT;

DEFINE_SHARED_POINTER(Type)

Bien sur, ca ne marche pas car j'aurais besoin de prevenir le
pre-processor qu'il doit remplacer T par Type dans le "PtrT" de la
definition de la macro.

Il me semble avoir lu un jour comment faire. A moins que je n'ai lu que
justement on ne peut pas le faire! Mais je me rappelle plus ;-) et je
retrouve pas sur le web.

Votre avis?

PS: la raison pour laquelle je veux une macro c'est pour pouvoir changer
en un seul endroit la classe utilisee pour les shared_pointer.

2 réponses

Avatar
Marc Boyer
In article <41077900$0$4721$, Xavier Decoret wrote:
Bonjour,

Pour toute mes classe, je definis un shared_pointer de la facon suivante:

typedef shared_ptr<Type> PtrType;

J'aimerais pouvoir remplacer cette ligne par une macro du genre:

#define DEFINE_SHARED_POINTER(T) typedef shared_ptr<T> PtrT;
#define DEFINE_SHARED_POINTER(T) typedef shared_ptr<T> Ptr ## T;


Marc Boyer
--
La contractualisation de la recherche, c'est me donner de l'argent pour
faire ce que je ne sais pas faire, que je fais donc mal, pendant que ce
que je sais faire, je le fais sans moyens...

Avatar
Xavier Decoret
Xavier Decoret wrote:
Bonjour,

Pour toute mes classe, je definis un shared_pointer de la facon suivante:

typedef shared_ptr<Type> PtrType;

J'aimerais pouvoir remplacer cette ligne par une macro du genre:

#define DEFINE_SHARED_POINTER(T) typedef shared_ptr<T> PtrT;

DEFINE_SHARED_POINTER(Type)

Bien sur, ca ne marche pas car j'aurais besoin de prevenir le
pre-processor qu'il doit remplacer T par Type dans le "PtrT" de la
definition de la macro.

Il me semble avoir lu un jour comment faire. A moins que je n'ai lu que
justement on ne peut pas le faire! Mais je me rappelle plus ;-) et je
retrouve pas sur le web.

Votre avis?

PS: la raison pour laquelle je veux une macro c'est pour pouvoir changer
en un seul endroit la classe utilisee pour les shared_pointer.


OK, j'ai trouve la solution finalement:

#define DEFINE_SHARED_POINTER(T) typedef shared_ptr<T> Ptr##T;