Je me demande quelle est la syntaxe pour appeler la méthode de modèle donné comme:Syntaxe pour appeler la méthode basé sur un modèle
struct print_ch {
print_ch(char const& ch) : m_ch(ch) { }
~print_ch() { }
template<typename T>
void operator()() {
std::cout << static_cast<T>(m_ch) << std::endl;
}
private:
char m_ch;
};
je suis venu avec STH comme ceci:
print_ch printer('c');
printer.operator()<int>();
Et il semble fonctionner (4,5 GCC), mais lors de l'utilisation à l'intérieur d'un autre procédé basé sur un modèle, par exemple:
struct printer {
typedef int print_type;
template<typename T_functor>
static void print(T_functor& fnct) {
fnct.operator()<print_type>();
}
};
Compilation échoue avec error: expected primary-expression before '>' token
. Une idée pour bien faire les choses? Merci d'avance.
Il est beaucoup plus propre il suffit de créer une fonction régulière. Les opérateurs doivent être utilisés avec parcimonie et lorsque cela est approprié. – JoshD
@JoshD merci, vous avez raison, je vais devoir reconsidérer cela – erjot
En effet, surcharger 'operator()' n'a pas de sens ici, car il ne peut pas être appelé avec la même syntaxe qu'une fonction normale, ce qui défait complètement le but. – UncleBens