无法初始化grpc::ClientReader(C2664错误)

问题描述 投票:0回答:1

平台: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++基础教程中的示例代码进行操作,并陷入了这个问题。

grpc-c++
1个回答
0
投票

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()
      )
    );
© www.soinside.com 2019 - 2024. All rights reserved.