Avatar ·

Cómo pasar correctamente unique_ptr a un constructor o función

¡Hola! Recientemente comencé a estudiar C++11 y estoy tratando de entender los punteros inteligentes, en particular std::unique_ptr. Leí que ayudan a gestionar la memoria automáticamente y no requieren delete. Pero tengo un problema: no entiendo cómo pasar correctamente unique_ptr a funciones y constructores. Aquí hay una clase simple que escribí: ```cpp #include #include class MyClass { public: MyClass(std::unique_ptr ptr) : data(std::move(ptr)) { std::cout << "Created with value: " << *data << std::endl; } private: std::unique_ptr data; }; void processData(std::unique_ptr ptr) { std::cout << "Processing: " << *ptr << std::endl; } int main() { auto p = std::make_unique(42); // ¿Cómo pasar p al constructor de MyClass? // MyClass obj(p); // ¡Error! No se copia. // MyClass obj(std::move(p)); // ¿Está bien? // ¿Cómo pasar a la función? // processData(p); // También error. // processData(std::move(p)); // }