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