Qualcuno è a conoscenza di un'implementazione di shared_ptr
e weak_ptr
insieme a un partner di inizializzazione pigro? I requisiti delle classi erano:puntatori condivisi, deboli e pigri in C++
Una classe
lazy_ptr
che consente a un cliente di costruire l'oggetto più tardi (se non del tutto), senza la necessità della realizzazione costruttoreUna classe
weak_lazy_ptr
che ha tre possibili stati : non ancora costruito (non agganciare unshared_ptr
), costruito (si blocca a unshared_ptr
) e distrutta (non agganciare unshared_ptr
)
I creato alcune classi che non hanno fatto il lavoro completamente qualche tempo fa (see CVu article here) che utilizzavano shared_ptr
e weak_ptr
nella loro implementazione. I principali problemi con un modello che utilizza i puntatori condivisi e di debolezza, invece di integrarsi con li seguono:
Una volta che tutti
lazy_ptr
oggetti andare fuori del campo di applicazione, eventuali riferimenti deboli non possono più essere bloccati, anche se altri clienti stanno tenendoshared_ptr
versioniCostruzione degli oggetti su diversi thread non possono essere controllati
apprezzerei tutto puntatori ad altri tentativi di conciliare questi problemi, o per qualsiasi lavoro i n progressi possono esserci in questa area.
Sembra quasi come 'shared_ptr>', giusto? –
GManNickG
@ user1078210 Forse puoi trovare maggiori informazioni [qui] (http: // StackOverflow.com/domande/878.166/è-non-c-lazy-pointer). – ealves
@GMan: 'boost :: optional' * fa * consente la costruzione differita, ma' boost :: shared_ptr' consente anche questo, quindi entrambi non sono necessari, se ti capisco. –