Passaggio di oggetti per riferimento C++

di il
2 risposte

Passaggio di oggetti per riferimento C++

Ho una funzione che prende in input due liste e ne deve restituire una terza che contiene tutti gli elementi delle due liste di partenza, che il prof mi ha detto che dev'essere una procedura di questo tipo:
void Lista::fondi(Lista L1, Lista L2, Lista &L3); // L3 viene creata dal main e passata per riferimento durante la chiamata
int main(){
        // creazione delle 3 liste
        L3.crea();
        L3.fondi(L1, L2, &L3);
}

// implementazione della funzione
ora il problema è che non capisco quale debba essere la sintassi per passare L3 come riferimento nella chiamata, con la & mi da errore

2 Risposte

  • Re: Passaggio di oggetti per riferimento C++

    
    L3.fondi(L1, L2, L3);
    
    E' un passaggio per reference, non per puntatore.
  • Re: Passaggio di oggetti per riferimento C++

    @lippolis2000 innanzitutto vorrei farti notare che è inutile postare dei topic se poi non segui i consigli che ti vengono dati. Ovviamente non sto dicendo che devi accettare tutto quello che ti viene detto in maniera acritica, ma almeno parliamone... Per quanto mi riguarda sono già 2 i topic in cui cerco inutilmente di instaurare un ragionamento!

    Non c'è due senza tre, ma almeno ci provo... la tua domanda dimostra che non sai come funziona un semplice passaggio per riferimento, ma il punto è un altro, ossia che in una funzione del genere
    void Lista::fondi(Lista L1, Lista L2, Lista &L3);
    ci sono più dati di quelli strettamente necessari, in quanto il puntatore nascosto this rende superfluo il parametro L3.
    Strade più coerenti sarebbero le seguenti:
    void fondi(Lista L1, Lista L2);
    static void fondi(Lista L1, Lista L2, Lista &L3);
    friend void fondi(Lista L1, Lista L2, Lista &L3);
Devi accedere o registrarti per scrivere nel forum
2 risposte