次のコードがあります。
msg_buf_ptr = std::make_unique<QByteArray>();
return QDataStream{msg_buf_ptr, QIODevice::WriteOnly};
次のエラーが表示されます。
no known conversion for argument 1 from ‘std::unique_ptr<QByteArray>’ to ‘QByteArray*’
しかし、なぜ?unique_ptr
ポインターを取る関数に引数として渡されると、shared_ptr
自動的に生のポインターに分解されると考えました。そうでない場合、なぜですか?彼らが(通常)そうするなら、なぜこれは失敗するのQByteArray
ですか?
を明示的に呼び出すこともできますmsg_buf_ptr.get()
が、それは不要なようです。