Je cherche une macro facile à utiliser pour appeler une fonction seulement une fois pour une valeur spécifique. Par exemple:Comment appeler une fonction seulement une fois par valeur en C++?
void foo(Object* obj)
{
// Print out the name of each object only once
DO_ONCE(obj, printf("This gets printed only once per object! %s\n",obj->GetName()));
}
Puis
Object obj1("obj1Name"),obj2("obj2Name");
foo(&obj1);
foo(&obj1);
foo(&obj2);
Si imprimer
This gets printed only once per object! obj1Name
This gets printed only once per object! obj2Name
Cela ne fonctionnera pas, une nouvelle série std :: <> est créé pour chaque invocation de la macro. – Ismael
Maintenant, ce n'est pas --- c'est déclaré statique! –
Eh bien oui ... pour chaque INVOCATION dans le code, mais n'est-ce pas exactement ce qui est nécessaire? Si vous avez plusieurs routines, vous voulez appeler chacune d'entre elles une fois. –