Salve a tutti e auguri! Spero che qualcuno possa darmi una mano visto che ho cercato in lungo in largo senza capire quale sia il problema, che adesso spiego... Ho una classe dove ho necessità di avere più costruttori ed anche un costruttore di copia, ad esempio:
codice:
class test{
public:
test(int a){
this->val = a;
}
test(test &a){
this->val = a.val;
}
private:
int val;
};
Quando provo poi dal main a scrivere:
codice:
...
test t1 = 5;
...
in teoria, tale istruzione dovrebbe essere equivalente ad una chiamata a
. In realtà la chiamata viene effettuata solo se non metto il costruttore di copia, infatti commentandolo il codice gira ed inserendo un cout nel costruttore
codice:
test::test(int a)
vedo che effettivamente è stato chiamato. Non appena decommento il costruttore di copia ricevo un errore dal compilatore del tipo
codice:
error: no matching function for call to test::test(test)
se tuttavia chiamo esplicitamente il costruttore tramite
tutto va bene...
Ricapitolando
codice:
class test{
public:
test(int a){
this->val = a;
}
test(test &a){
this->val = a.val;
}
private:
int val;
};
int main(){
test t1 = 5; //non funziona
test t2(5); //funziona
}
Chiedo gentilmente aiuto se qualcuno di voi sa come risolvere il problema? Grazie in anticipo e nuovamente auguri!