c++ - 如何将对 std::streambuf 的引用传递给期望 std::istream& 的方法?
问题描述
我有一个指向 a 的唯一指针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());
推荐阅读
- android - 工具栏盲片
- linux - Kubernetes cron 作业提前 1 分钟运行
- r - 使用 ggplot 根据第一个数据点的所有结果绘制图表
- xml - Android Studio - 按钮 XML 设计
- driver - 点击 Win32 适配器安装失败
- delphi - 如何在 Delphi 中调试 CEF3 / libcef.dll 并收集有关 c0000005 / 001dea9b 异常的信息
- ios - 如何获取稍后将存储在 Realm 表中的 JSON 数组?
- android - 是否可以将 Jenkins 用于 Flutter?
- python - 安排 SQLAlchemy 清除表中的所有行
- httpclient - 如何通过 Httpclient 将 JSON 数据发布到 Pardot API