Il costruttore di copia riceve l'argomento per const reference:
---codice:class test{ public: test(int a){ this->val = a; } test(const test &a){ this->val = a.val; } private: int val; }; int main(){ test t1 = 5; test t2(5); }
Il punto è questo: quando tu scrivi
c'è di mezzo una chiamata al costruttore che accetta int e una chiamata al costruttore di copie; di fatto, è equivalente a:codice:test t1 = 5;
In questo blocco, test(5) è un temporary, che non può essere passato per riferimento al tuo "costruttore di copie senza const" dato che i reference non const non possono bindare oggetti temporanei. Da lì l'errore.codice:test t1(test(5));

Rispondi quotando
