Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2015
    Messaggi
    9

    [C++] Errore compilazione C++ - error: no matching function for call to

    Ragazzi come da titolo dopo che compilo il mio codice mi esce quest'errore "error: no matching function for call to ‘MEM::salva(std::vector<DIZIONARIO>)’|" sto da ieri mattina a modificare e capire cosa non va, non so più cosa vedere, purtroppo sono ancora una frana col c++ quindi molte cose non mi vengono semplici come con il c . Questo errore in genere cosa sta a significare? . Grazie mille
    Ultima modifica di Alex-93; 01-07-2015 a 00:01

  2. #2
    Senza codice è sostanzialmente impossibile aiutarti, stai tranquillo che nessuno te lo ruba.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2015
    Messaggi
    9
    Allora l'errore me lo da qua:
    in this->....
    codice:
    void AZIONI::salvaHash(){
    this->memoria.salva(htable.daiT());
    cout<<"salvataggio avvenuto ";
    system("pause"); }
    il metodo a cui fa riferimento è questo:

    codice:
    void MEM::salva(vector<DIZIONARIO> &tabella){/    fstream file("file1.txt",ios::out);
    for(int i=0;i<tabella.size();i++){
            if(tabella.at(i).daiP() != ""){
                file<<tabella.at(i).daiP()<<endl;
                file<<tabella.at(i).daiD()<<endl;
        }
    }
    file.close();
    }
    Come potrei procedere?

  4. #4
    Qual'è la firma del metodo daiT() di htable? Perché se restituisce un std::vector<DIZIONARIO> non puoi passarlo ad un metodo che prende un reference ad esso, dato che non si possono agganciare reference non costanti ad oggetti temporanei (come i valori di ritorno di una funzione).
    Se il problema è questo, basta aggiungere un const al tipo del parametro (const vector<DIZIONARIO> &tabella).
    Ultima modifica di MItaly; 01-07-2015 a 00:08
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2015
    Messaggi
    9
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Qual'è la firma del metodo daiT() di htable? Perché se restituisce un std::vector<DIZIONARIO> non puoi passarlo ad un metodo che prende un reference ad esso, dato che non si possono agganciare reference non costanti ad oggetti temporanei (come i valori di ritorno di una funzione).
    Se il problema è questo, basta aggiungere un const al tipo del parametro (const vector<DIZIONARIO> &tabella).
    Grazie mille per la dritta provato adesso da errore in:
    codice:
    void MEM::salva(const vector<DIZIONARIO> &tabella){    fstream file("file1.txt",ios::out);
    for(int i=0;i<tabella.size();i++){
            if(tabella.at(i).daiP() != ""){
                file<<tabella.at(i).daiP()<<endl;
                file<<tabella.at(i).daiD()<<endl;
    Come errore sull'if
    9|error: passing ‘const DIZIONARIO’ as ‘this’ argument of ‘std::string DIZIONARIO::daiP()’ discards qualifiers [-fpermissive]|
    10|error: passing ‘const DIZIONARIO’ as ‘this’ argument of ‘std::string DIZIONARIO::daiP()’ discards qualifiers [-fpermissive]|
    11|error: passing ‘const DIZIONARIO’ as ‘this’ argument of ‘std::string DIZIONARIO::daiP()’ discards qualifiers [-fpermissive]|

    Grazie mille
    Ultima modifica di Alex-93; 01-07-2015 a 00:24

  6. #6
    Eh il problema è che in C++ il const è pervasivo... se inizi ad usarlo devi sistemare anche la classe DIZIONARIO in modo che i metodi siano marcati con il const in maniera corretta. L'alternativa più facile è o ricevere tabella per valore (togli il const e l'&), oppure rimettere il codice com'era prima e usare una variabile d'appoggio, del tipo:
    codice:
    vector<DIZIONARIO> t = htable.daiT();
    this->memoria.salva(t);
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.