Oharra
Orrialde honetara sartzeak baimena behar du. Saioa hasteko edo direktorioak aldatzen saia zaitezke.
Orrialde honetara sartzeak baimena behar du. Direktorioak aldatzen saia zaitezke.
El parámetro de puntero compartido no se copia ni se mueve. Use T* o T& en su lugar.
Directrices básicas de C++: R.36: Tomar un shared_ptr widget< y parámetro const>para expresar que podría conservar un recuento de referencias para el objeto
Si un parámetro de puntero compartido se pasa por valor o por referencia a un objeto constante, se espera que la función tome el control de la duración del objeto de destino sin afectar al autor de la llamada. El código debe copiar o mover el parámetro de puntero compartido a otro objeto de puntero compartido o pasarlo a otro código invocando funciones que aceptan punteros compartidos. De lo contrario, un puntero o referencia sin formato puede ser factible.
Comentarios
Esta comprobación reconoce
std::shared_pointery los tipos definidos por el usuario que probablemente se comporten como punteros compartidos. En los punteros compartidos definidos por el usuario se esperan los rasgos siguientes:operadores de acceso a miembros o de desreferencia sobrecargados (públicos y no eliminados);
un constructor de copia o un operador de asignación de copia (público y no eliminado);
Un destructor público que no esté eliminado o sea el predeterminado. Los destructores vacíos todavía cuentan como definidos por el usuario.
Ejemplos
complicación innecesaria de la interfaz
template<class T>
std::string to_string(const std::shared_ptr<T> &e) // C26418, also C26415 SMART_PTR_NOT_NEEDED
{
return !e ? null_string : e->to_string();
}
complicación innecesaria de la interfaz: simplificado
template<class T>
std::string to_string(const T *e)
{
return !e ? null_string : e->to_string();
}