tengo una estructura:Fundición shared_ptr <T> a shared_ptr <void>
struct Params {
std::shared_ptr<void> user_data;
/* ... */
};
quiero utilizar de esta manera:
int main() {
std::shared_ptr<SpecializedParams> sp(new SpecializedParams(100));
Params params;
/* ... */
params.user_data = std::static_pointer_cast<void>(sp);
/* ... */
std::shared_ptr<SpecializedParams> sp2 =
std::static_pointer_cast<SpecializedParams>(
params.user_data
);
/* ... */
return 0;
}
¿Es esta válida y segura?
¿Qué es params en el bloque principal? –
No se puede 'borrar' un puntero de vacío, por lo que su código ni siquiera debería compilarse. –
@KerrekSB punteros compartidos para anular son ciertamente válidos. Consulte aquí para obtener más detalles: http://stackoverflow.com/questions/5913396/why-do-stdshared-ptrvoid-work –