c++ - 如何将对 std::streambuf 的引用传递给需要 std::istream& 的方法?

标签 c++ smart-pointers

我有一个指向 streambuf 的唯一指针,我想将该指针传递给采用输入流引用的方法,以便我可以使用流中的字节来实例化对象。

如何将 std::streambuf 传递给对象方法?

std::unique_ptr<std::streambuf> sb = getStreamBuf();
Object(std::istream& sRef) 

如何将sb转换为sRef

最佳答案

你将无法直接。由于 Object 仅采用非常量左值引用,因此您需要将命名对象传递给它。那需要你有类似的东西

std::unique_ptr<std::streambuf> sb = getStreamBuf();
std::istream passer{sb.get()};
Object(passer);

如果您有 C++11 或更高版本,您可以将签名更改为

Object(std::istream&& sRef) 

然后你就可以拥有

std::unique_ptr<std::streambuf> sb = getStreamBuf();
Object(sb.get());

关于c++ - 如何将对 std::streambuf 的引用传递给需要 std::istream& 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51619215/

相关文章:

c++ - std::shared_ptr 和 std::experimental::atomic_shared_ptr 有什么区别?

c++ - 将构造函数中动态分配的数组分配给唯一的智能指针成员变量

c++ - 如何在 Intel-Edison [C++] 上打开 ttyMFD 设备?

c++ - 英特尔 C++ 优化器删除了 masm 代码

c++ - 更改运行时库破坏了 std::string。为什么?

c++ - 引用计数智能指针的赋值运算符

c++ - 为什么这段代码运行这么慢?

c++ - 函数void QQuickWindow::setDefaultAlphaBuffer(bool useAlpha)有什么用?

c++ - unique_ptr 所有权语义

c++ - 如何在 C 中包装返回智能指针的 C++ 函数?