2016-01-17 23 views
6

In che modo D gestisce la proprietà degli oggetti? Per esempio ho bisogno di esprimere il seguente:Riferimenti deboli o puntatori

1.) Allocate an object 
2.) Give out references/pointers 
3.) If the initially allocated object is deleted, 
    all references/pointers should become inaccessible. 

In C++ questo è possibile con std::shared_ptr + std::weak_ptr. Questo è anche possibile in D?

+0

Vedere https://dlang.org/spec/garbage.html per comprendere meglio come controllare la durata degli oggetti. –

+0

@key_ Sei sicuro di aver pubblicato il link corretto? Non riesco a trovare nulla relativo alla gestione del tempo di vita. –

+0

Dovrai implementare un riferimento sigillato quindi mantenere puntatori ai puntatori ogni volta che ne passi uno. Quegli indicatori vorranno essere consapevoli della propria vita per rimuovere se stessi dalla lista ... c'è una buona quantità di spese generali coinvolte. I riferimenti deboli stessi sono semplici: basta creare un puntatore che il GC non esegue la scansione o non aumentare il tuo conto, ma invalidarli quando l'oggetto viene eliminato è più difficile. –

risposta

2

Al momento non esiste una buona implementazione di riferimenti deboli in D.

prega di controllare questi fili due forum:

errati o "quasi "implementazioni corrette:

Il problema più grande è che è necessario un buon API intorno riferimenti deboli. Java e .NET ce l'hanno, ed è discutibilmente BAD. Per una buona ragione - è difficile trovare una buona api!

+1

Odio che così tanti thread del forum D abbiano i simboli del dollaro nell'URL. Bah, rompe molti rilevatori di url. –