// api_internal.proto
service InvoiceTemplateMatcher {
rpc Process(InvoiceFilePath) returns (UploadStatus) {}
}
message InvoiceFilePath {
string invoice_id = 1;
string file_path = 2;
}
// template_matcher/src/main.cc
class OrkaEngineInvoiceTemplateMatcherImpl final : public InvoiceTemplateMatcher::Service {
private:
Status Process(
ServerContext* context,
orka_engine_internal::InvoiceFilePath* invoicefp,
orka_engine_internal::UploadStatus* response) override {
// do stuff
}
};
Classe InvoiceTemplateMatcher::Service
est généré pendant la compilation à partir de ce .proto
fichier.
Lorsque j'essaye de compiler, j'obtiens une erreur
‘grpc::Status OrkaEngineInvoiceTemplateMatcherImpl::Process(grpc::ServerContext*, orka_engine_internal::InvoiceFilePath*, orka_engine_internal::UploadStatus*)’ marked ‘override’, but does not override
Status Process(ServerContext* context, orka_engine_internal::InvoiceFilePath* invoicefp, orka_engine_internal::UploadStatus* response) override {
Autant que je sache, mon code est écrit de la même manière que dans exemple Route Guide . Qu'est-ce que je rate?
Je sais que ce message est assez ancien, mais je donnerai une réponse correcte pour tout dépannage futur que cette personne pourrait rencontrer lors de son travail avec des protobufs.
Vous avez raison de dire que l'implémentation de classe a été générée automatiquement et que la génération de protobuf c ++ a cette fonction de classe par défaut:
virtual ::grpc::Status Process(::grpc::ServerContext* context, const ::orka_engine_internal::InvoiceFilePath* request, ::orka_engine_internal::UploadStatus* response);
Vous devez donc faire correspondre exactement votre fonction à la fonction virtuelle. Dans votre exemple, changez simplement invoicefp
en request