Esiste un buon nome per questo modello di puntatore? [chiuso]

0

Sto cercando il nome corretto di un modello di classe con le seguenti funzionalità:

L'interfaccia sarebbe simile a questa, dove Foo è un segnaposto per il nome che sto cercando.

template<typename T> 
struct Foo
{
    T* operator->();
    T* operator*();
}

Quindi imita un puntatore a un oggetto, proprio come std::unique_ptr<> e std::shared_ptr<> do. A differenza di questi, avere Foo<T> su un oggetto non implica la proprietà su questo oggetto. Tutto ciò che Foo<T> fa è fornire un puntatore a questo oggetto e, questa è la parte importante, una volta che l'oggetto Foo<T> punta a viene cancellato entrambi gli operatori restituiscono nullptr invece del puntatore ora non valido.

Sto cercando un nome descrittivo per questa classe. Forse ha semantica intersecante con un modello ben definito di cui non sono a conoscenza?

    
posta hllnll 18.10.2014 - 17:05
fonte

1 risposta

4

È un puntatore debole

È comune nelle lingue dei GC per i valori memorizzati nella cache che è possibile eliminare e la mappa che lo contiene può rilevarlo e ricrearlo.

C ++ ha un weak_ptr che funziona in congiunzione con shared_ptr . Puoi assegnare un shared_ptr a un weak_ptr e ottenere di nuovo il file shared_ptr in seguito con lock finché l'ultimo shared_ptr non è stato ancora distrutto, dopo che ha quindi lock restituisce un shared_ptr che contiene un puntatore nullo.

    
risposta data 18.10.2014 - 18:15
fonte

Leggi altre domande sui tag