Wie man unique_ptr korrekt an einen Konstruktor oder eine Funktion übergibt
Hallo! Ich habe kürzlich angefangen, C++11 zu lernen und versuche, mich mit Smart Pointern, insbesondere mit std::unique_ptr, vertraut zu machen. Ich habe gelesen, dass sie helfen, Speicher automatisch zu verwalten und kein delete erfordern. Aber ich habe ein Problem: Ich verstehe nicht, wie man unique_ptr korrekt an Funktionen und Konstruktoren übergibt.
Hier ist eine einfache Klasse, die ich geschrieben habe:
```cpp
#include
#include
class MyClass {
public:
MyClass(std::unique_ptr ptr) : data(std::move(ptr)) {
std::cout << "Erstellt mit Wert: " << *data << std::endl;
}
private:
std::unique_ptr data;
};
void processData(std::unique_ptr ptr) {
std::cout << "Verarbeite: " << *ptr << std::endl;
}
int main() {
auto p = std::make_unique(42);
// Wie übergibt man p an den Konstruktor von MyClass?
// MyClass obj(p); // Fehler! Kann nicht kopiert werden.
// MyClass obj(std::move(p)); // Ist das richtig?
// Wie übergibt man an eine Funktion?
// processData(p); // Auch ein Fehler.
//