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.
//