Newsgroup: it.comp.lang.c++
Titolo: Spiegazione su puntatori come parametri

Salve a tutti è il mio primo messaggio quindi un saluto tutti :D
Sono alle prime armi col c++ e mi trovo davanti ad un piccolo problema
che non riesco a capire, mi spiego:
ho creato una funzione in un file che prende un FILE come parametro e
nel main dello stesso progetto chiamando la funzione mi ritrovo con un
errore che non riesco a capire.A quanto ho capito sembra che non
sappia usare bene i puntatori.Vi faccio vedere:
la funzione ha questa intestazione:
template <class Tipo> Coda<char> acquisisciElementoFile(FILE *file);
e nel main la uso in questo modo:
    Coda<char> coda;
    FILE *leggiFile;
    leggiFile= fopen("file.txt","r");
    if(leggiFile != NULL)
    {
        coda= acquisisciElementoFile(leggiFile);
    }else   std::cout<<"ERRORE: file non trovato o nn
valido."<<std::endl;
mi spiegate perchè alla compilazione mi dà questo errore:
14  no matching function for call to `acquisisciElementoFile(FILE*&)'
GRAZIE mille per una vostra risposta.Ciao

         coda= acquisisciElementoFile(leggiFile);
prova con
	coda = acquisiciElementoFile<char>(leggiFile);
E.

Grazie della risposta ma il problema di entità diversa, non è un
errore sui template ma sui puntatori:
14  no matching function for call to `acquisisciElementoFile(FILE*&)
secondo l'errore non fornisco il parametro giusto alla funzione


No, l'errore dice che non trova una funzione con quel nome e quei 
parametri. Se c'è una funzione con il nome giusto ma che accetta 
parametri diversi il compilatore di solito te lo dice.
Hai provato a fare la correzione che ti ho suggerito?
E.

Ciao, ho provato come dicevi te ma non serviva a nulla, cmq ho risolto
in un'altro modo.
Grazie mille ancora per la risposta e ciao a tutti

 Grazie mille ancora per la risposta e ciao a tutti
Potresti almeno spiegare qual'era il problema e come lo hai risolto.
Qui c'e' gente che con cortesia ti ha risposto,
non e' un help desk e potresti dare un contributo a tua volta.
Un lurker.

 Grazie mille ancora per la risposta e ciao a tutti
magari dillo..

ok, chiedo scusa per non aver postato la soluzione avete ragione non è
help desk, solo che non ho avuto tempo perché sono molto preso dal
progetto ed ho una scadenza da rispettare.
Comunque vi spiego il problema e come l'ho risolto:
io ho creato quella funzione che leggeva da un file una riga e ne
inseriva ogni carattere in una coda,mi ritornava sempre quell'errore
perché nella funzione io usavo una coda ausiliaria per inserire i
caratteri e tale coda la ritornavo a chi aveva chiamato la funzione,
quindi nel main io facevo in questo modo: Coda<char> prova=
acquisiciElementoFile(fileDAleggere);
ovviamente non avendo scritto una funzione di overloading
dell'operatore = mi ritrovavo sempre con degli errori, ho risolto in
modo molto semplice e veloce passo la coda originale come parametro
per riferimento.
Vi chiedo ancora scusa per non aver risposto subito e vi ringrazio per
le vostre risposte.
Saluti a tutti

Non so se mi sono spiegato bene per cui vi posto direttamente il
codice per farvi capire bene:
//funzione che estrae una striga da un file e la inserisce in una coda
void acquisisciElementoFile( FILE *file, Coda<char> &c)
{
    char tmp;
    while(tmp != '\n')
    {
        tmp= (char)fgetc(file);
        c.inCoda(tmp);
    }
}
e nel main ho la chiamata alla funzione in questo modo:
    Coda<char> c;
    FILE *leggiFile;
    leggiFile=fopen("file.txt","r");
    acquisisciElementoFile(leggiFile, c);
    fclose(leggiFile);
    std::cout<<std::endl<<std::endl;
    stampaCoda(c);
    //fine
    system("PAUSE");
    return 0;
}
mi scusa ancora e ciao a tutti