he intentado escribir esta clasecomportamiento extraño para unique_pointer en Visual Studio 2010
#include <memory>
class ContainerUnique
{
public:
ContainerUnique(void);
~ContainerUnique(void);
private:
std::unique_ptr<UniqueElement> u;
};
Dónde UniqueElement es una clase POD define en otra parte. Ahora defino el cuerpo constructor así:
ContainerUnique::ContainerUnique(void)
{
auto tmp = new UniqueElement(1);
this->u(tmp); // u is a unique_ptr<UniqueElement>. Should this call compile?
}
Y cumple sin excepciones. Ejecutando el programa encuentro que después de que se ha llamado al constructor de ContainerUnique
, u
contiene un puntero nulo.
¿Es este el comportamiento previsto? ¿Y qué método unique_ptr estoy llamando?
No estoy seguro de los problemas que está teniendo. Pero evítelos inicializando la variable miembro u en la lista de inicio del desarrollador. –
Sí, esa es la solución que utilicé en mi código real, pero todavía no estoy seguro de lo que está sucediendo en el ejemplo. –
Intente imprimir el tipo de su variable automática. No estoy seguro de si typeid funciona. Una vez que sepa el tipo, el resto debería ser fácil. –