Bonjour � tous,
Voil�, j'ai un gros soucis de C++, qui vise les plus experts d'entre vous, m�me si le principe est simple.
Je voudrais rendre un operateur d'une classe utilisable sans qu'il soit "auto-d�fini".
Un exemple sera plus simple � comprendre :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| template<typename T>
class XX
{
public:
XX() {}
T* operator()() { return new T; }
};
class YY
{
public:
YY() {}
template<typename T>
T* operator()() { return new T; }
};
int main()
{
int* x = XX<int>()();
int* y = YY()<int>();
return 0;
} |
Donc, ici, la classe XX est utilisable tel quel pour remplir la variable x.
Par contre, �a ne m'interesse pas, et je voudrais pouvoir utiliser la surcharge par template uniquement sur la fonction (et non sur toute la classe), c'est � dire, la forme de YY.
Il n'y a pas de soucis avec la d�finition de classe, par contre, un appel direct de la forme ci-dessus ne compile m�me pas. Cette syntaxe fonctionne :
int* y = YY().operator()<int>();
Mais je perd l'int�r�t de l'op�rateur.... Quel syntaxe utiliser pour rendre cela possible ?
Merci.
Snark.
Partager