Ciao a tutti!

A scopo puramente sperimentale e formativo, stavo sperimentando per vedere se fossi in grado di scrivermi una coda linkata. Si, una coda. Tanto per provare :P

Ho usato due classi template, una per i "nodi" della coda e una per la coda in sè. Scrivo i metodi push e pop, sembra tutto a posto. Allora nel mio main faccio un piccolo test:

codice:
int main()
{
    cout << "Creating the queue...\n";

    LinkedQueue<int> queue();

    cout << "Pushing 10 elements...\n";

    for (int i = 0; i < 10; i++)
    {
        linkedNode<int> node(new int(i));

        queue.Push(&node);
    }

    return 0;
}
Il compilatore si rifiuta: arrivato al ciclo for mi da errore. Per la richiesta di "Push" all'interno della variabile "queue", la quale "is of non-class type LinkedQueue<int>()".

Ora, io stavo già per scrivervi e chiedere aiuto. Poi fortunatamente ho avuto l'idea (non so come!) di togliere quelle due parentesi nella dichiarazione. Era tutto lì il problema.

Ora, il problema è risolto e quindi capirò se i moderatori lo chiuderanno. Ma il dubbio rimane... se dichiaro queue così:

codice:
LinkedQueue<int> queue();
qual'è il suo tipo? Ho capito che è LinkedQueue<int>(), ma che cosa rappresenta? Cioè, se è un tipo distinto dalla sua controparte senza parentesi, perchè il compilatore non mi ha impedito di dichiararla?