どうすればstd::unique_ptr
関数にを渡すことができますか?次のクラスがあるとしましょう。
class A
{
public:
A(int val)
{
_val = val;
}
int GetVal() { return _val; }
private:
int _val;
};
以下はコンパイルされません。
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;
}
なぜstd::unique_ptr
関数にを渡せないのですか?確かに、これが構成の主な目的ですか?または、C ++委員会は、生のCスタイルのポインターにフォールバックして次のように渡すことを意図していましたか?
MyFunc(&(*ptr));
そして何よりも奇妙なことに、なぜこれがそれを渡すのに良い方法なのですか?それはひどく矛盾しているようです:
MyFunc(unique_ptr<A>(new A(1234)));