Wie kann ich ein std::unique_ptr
in eine Funktion übergeben? Nehmen wir an, ich habe folgende Klasse:
class A
{
public:
A(int val)
{
_val = val;
}
int GetVal() { return _val; }
private:
int _val;
};
Folgendes wird nicht kompiliert:
void MyFunc(unique_ptr<A> arg)
{
cout << arg->GetVal() << endl;
}
int main(int argc, char* argv[])
{
unique_ptr<A> ptr = unique_ptr<A>(new A(1234));
MyFunc(ptr);
return 0;
}
Warum kann ich a nicht an std::unique_ptr
eine Funktion übergeben? Dies ist sicherlich der Hauptzweck des Konstrukts? Oder wollte das C ++ - Komitee, dass ich auf rohe C-Zeiger zurückgreife und es so weitergebe:
MyFunc(&(*ptr));
Und am seltsamsten ist, warum ist dies eine gute Möglichkeit, es weiterzugeben? Es scheint schrecklich inkonsistent:
MyFunc(unique_ptr<A>(new A(1234)));