5
Ho un problema in cui mi piacerebbe copiare un oggetto, ma voglio evitare di affettarlo.Come evitare la segmentazione degli oggetti C++
DerivedObj derivedObj;
myFunc(derivedObj);
void myFunc(MyObj &obj)
{
MyObj *saveForLater = new MyObj(obj); // slices my object
// ... //
}
C'è un modo per aggirare questo? Ho bisogno di fare una copia perché l'oggetto originale avrà lasciato l'ambito prima che sia richiesto.
@ clcto come farà alcuna differenza? –
@clcto Passare un puntatore contro un riferimento non è un problema. Puntatori * e * riferimenti NON vengono tagliati. Considerare puntatori e riferimenti "non affettabili". L'affettatura avviene sull'istruzione con la chiamata 'new'. –
Per quanto ne so, hai due opzioni principali, un metodo virtuale chiamato 'clone()' o essere in grado di dare una sorta di proprietà di 'obj' a' myFunc() ', magari usando un' shared_ptr '. –