如何将对 std::streambuf 的引用传递给需要 std::istream& 的方法?
How to pass a reference to a std::streambuf to a method expecting a std::istream&?
我有一个指向 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());
我有一个指向 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());