平台:Windows MSVC 2022 (v143)
C++版本:C++17
gRPC版本:1.60.0(与vcpkg一起安装)
std::unique_ptr< grpc::ClientReader<MyData> > reader(
stub->StreamService(&context, request)
);
它返回错误C2664:
无法转换参数
'std::unique_ptrgrpc::ClientReader>::unique_ptr(const std::unique_ptrgrpc::ClientReader > &)': 1 来自 'std::unique_ptrgrpc::ClientReaderInterface >' 'const' std::unique_ptrgrpc::ClientReader > &'
我只是按照grpc C++基础教程中的示例代码进行操作,并陷入了这个问题。
Stub->StreamService(&context, request)
返回 ClientReaderInterface
的智能指针。reader
将此智能指针的所有权转移到ClientReader
,这是ClientReaderInterface
的类型(std::move
的子类),但失败了。相反,我用下面的方法成功了。
auto client_reader_interface
= stub->StreamService(&context, request);
auto reader
= std::unique_ptr<grpc::ClientReader<MyData> >(
static_cast<grpc::ClientReader<MyData>* >(
client_reader_interface.release()
)
);