Avatar ·

Como passar corretamente unique_ptr para um construtor ou função?

Olá! Recentemente comecei a estudar C++11 e estou tentando entender os smart pointers, em particular o std::unique_ptr. Li que eles ajudam a gerenciar a memória automaticamente e não precisam de delete. Mas tenho um problema: não entendo como passar unique_ptr corretamente para funções e construtores. Aqui está uma classe simples que escrevi: ```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); // Como passar p para o construtor de MyClass? // MyClass obj(p); // Erro! Não pode ser copiado. // MyClass obj(std::move(p)); // Isso está correto? // Como passar para a função? // processData(p); // Também erro. //