ho cercato di utilizzare template per il sovraccarico di operatore di chiamata di funzione come nel seguente programma:C++ modello per la funzione di chiamata operatore
#include <stdio.h>
struct Apple
{
template <typename tn> tn value();
template <typename tn> tn operator()();
};
template <> int Apple::value()
{
return 10;
}
template <> int Apple::operator()()
{
return 10;
}
int main()
{
Apple apple;
printf("Value : %d\n", apple<int>());
printf("Value : %d\n", apple.value<int>());
return 0;
}
Mentre funzione di valore chiamata nella seconda stampa non mostra alcun errore l'operatore di funzione di chiamata il primo errore mostra stampa expected primary-expression
. Non so cosa sto sbagliando. Qualcuno può aiutarmi a conoscere il problema grazie in anticipo.
ottima risposta che ti ha aiutato a ringraziarti. posso sapere perché la chiamata non può essere dedotta – Dinesh
@Dinesh, l'unico modo per dedurre un tipo è di abbinarlo con qualche espressione. Nel tuo caso, nel sito di chiamata non esiste alcuna espressione contro cui confrontarsi. – vsoftco
sì ma ho specificato il tipo esplicitamente in entrambi i casi e non riesco a capire perché l'errore è solo nella funzione di sovraccarico dell'operatore chiamata – Dinesh