PDA

Visualizza la versione completa : [c++]MoveSemantic


giuseppe500
12-08-2013, 16:26
ciao .
Espongo rapidamente il problema:
In un progetto opengl Ho una struttura triangle che contiene tre punti e vari attributi.
Un oggetto trimesh contiene una lista di questi triangle.
questi triangle sono dell'ordine dei 10000 - 30000 e vengono estratti da vari formati di interscambio in un modulo che ho creato per l'importazione.
La classe che inserisce i dati e crea i buffer opengl contiene la lista all'inizio ma questa lista deve essere rapidamente spostata nella trimesh perchè è li che vengono fatti i calcoli come il calcolo della normale, l'estrazioni dei contorni ecc.... quindi è li che devono risiedere i triangoli

chiedo perchè in questo caso mi sembra sia buona cosa la move semantic.

Il problema che non riesco a capire è che ho letto che dopo la move semantic i dati da cui si sono spostati vengono messi a null.
Esiste un costruttore di copia che crea varie copie di qusti blocchi(liste)di triangoli ?
senza impostarli a null, perchè dopo che li imposto a null i dati sono persi, e qui forse mi sbaglio perchè non ho capito.

esiste in pratica un costruttore di copia per la move semantic che mi replica n copie uguali di una lista di questi triangle?

grazie.

MItaly
12-08-2013, 19:12
Se vuoi creare copie, usa il costruttore di copie. :stordita: La move semantic serve quando vuoi spostare un oggetto in un altro, e l'oggetto originale non serve più (tipicamente si usa con oggetti temporary e roba del genere).

Se invece quello che vuoi è creare delle copie "copy on write" (=finché non vengono modificati, internamente puntano tutti ai dati originali, e la copia viene creata solo al momento della modificat), come molti oggetti delle Qt, il C++ non fornisce nulla di già fatto, devi implementarteli da te.

Loading