Buongiorno a tutti,
se volessi copiare un valore INT da un oggetto ad un altro, è possibile mediante il seguente codice:
#include <stdio.h>
class Classe1{
private: int a = 5;
public: int get(){
return(a);
}
};
class Classe2{
public: Classe2(int b){
printf("%d\n",b);
}
};
int main(){
Classe1 c1;
Classe2 c2(c1.get());
return(0);
}
Con questo codice si istanzia una classe con un valore INT di 5, di seguito si istanzia un secondo oggetto, prendendo come valore INT, il valore INT del primo oggetto.
La mia domanda è la seguente:
Se invece volessi copiare i valori di una STRUCT?
Ovvero, prendere i valori della STRUCT del primo oggetto e passarlo al secondo oggetto?
Ho scritto il seguente sorgente, basandomi sul primo, ma il compilatore mi restituisce errore.
#include <stdio.h>
class Classe1{
private: struct struct1{
int a;
int b;
};
private: struct struct1 s;
public: Classe1(){
printf("Istanziato\n");
s.a = 5;
s.b = 10;
}
public: struct struct1 get(){
return(s);
}
};
class Classe2{
private: struct struct1{
int a;
int b;
};
private: struct struct1 s1;
public: Classe2(struct struct1 s2){
s1 = s2;
printf("%d\n", s1.a);
printf("%d\n", s1.b);
}
};
int main(){
Classe1 c1;
c1.get();
Classe2 c2(c1.get());
return(0);
}
L'errore restituito dal compilatore è il seguente:
error: no matching function for call to ‘Classe2::Classe2(Classe1::struct1)’
40 | Classe2 c2(c1.get());
Dove sbaglio?
Grazie a tutti.