Nie wiem czy dobrze zrozumiałem Twoją chęć sklonowania czegoś, ale można utworzyć nowy obiekt z identycznymi parametrami jak inny.
class Kwadrat
{
public:
int bok;
};
int main()
{
Kwadrat k1;
k1.bok = 5;
// Tworzymy dynamicznie nowy obiekt k2
// o identycznych parametrach co k1.
Kwadrat * k2 = new Kwadrat( k1 );
cout << k2->bok; // jak widać działa
return 0;
}
W ten sposób tworzymy nowy obiekt i przepisujemy mu wszystkie wartości. Ale wiąże się to również z ryzykiem! Bo jeżeli elementem składowym klasy jest jakiś wskaźnik, to on również zostanie przepisany, czyli będziesz posiadał 2 obiekty, wewnątrz których są 2 wskaźniki pokazujące na jeden element.
Jeżeli interesuje Cię masowe sklonowanie jakiegoś obiektu, to tworzysz sobie tablicę wskaźników:
Kwadrat * tab[ 10 ];
i potem uzupełniasz klonami:
for( int i = 0; i < 10; i++ )
tab[ i ] = new Kwadrat( k1 )
potem już tylko się odwołujesz:
tab[ 5 ]->bok
Jeżeli dobrze zrozumiałem, to w ten sposób powinieneś bezproblemowo "sklonować" swoje obiekty.
Pozdrawiam.