A'yı std::unique_ptr
bir işleve nasıl geçirebilirim ? Diyelim ki şu sınıfa sahibim:
class A
{
public:
A(int val)
{
_val = val;
}
int GetVal() { return _val; }
private:
int _val;
};
Aşağıdakiler derlenmez:
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;
}
Neden a'yı std::unique_ptr
bir işleve geçiremiyorum? Elbette yapının birincil amacı bu mu? Veya C ++ komitesi ham C tarzı işaretlere geri dönmemi ve bunu şu şekilde aktarmamı mı istedi:
MyFunc(&(*ptr));
Ve en tuhafı, bu neden onu geçmenin iyi bir yolu? Korkunç derecede tutarsız görünüyor:
MyFunc(unique_ptr<A>(new A(1234)));