Je suis en train d'utiliser google protobuf et ils ont l'exemple suivant:C++ « en utilisant » déclaration dans Visual Studio 2008
using google::protobuf;
protobuf::RpcChannel* channel;
protobuf::RpcController* controller;
SearchService* service;
SearchRequest request;
SearchResponse response;
void DoSearch() {
// You provide classes MyRpcChannel and MyRpcController, which implement
// the abstract interfaces protobuf::RpcChannel and protobuf::RpcController.
channel = new MyRpcChannel("somehost.example.com:1234");
controller = new MyRpcController;
// The protocol compiler generates the SearchService class based on the
// definition given above.
service = new SearchService::Stub(channel);
// Set up the request.
request.set_query("protocol buffers");
// Execute the RPC.
service->Search(controller, request, response, protobuf::NewCallback(&Done));
}
void Done() {
delete service;
delete channel;
delete controller;
}
L'erreur que je reçois lorsque je tente de mettre en œuvre ce code dans Visual Studio Express 2008 est:
erreur C2873: google :: protobuf ': symbole ne peut pas être utilisé dans un en utilisant déclaration
Edit: Quand je fais "using namespace google :: protobuf;" à l'intérieur d'une fonction, cela ne me donne plus l'erreur. Ce que je suis confus, c'est que cela ne fonctionne pas comme l'exemple de Google (et Stroustrup dans "The C++ Programming Language") semblent indiquer.
Pouvez-vous faire référence à l'exemple de Google ou la section de TC++ PL que vous sont les suivantes? –
ou voulez-vous dire espace de noms protobuf = google :: protobuf; ? –
L'exemple Google que je connais (http://code.google.com/apis/protocolbuffers/docs/cpptutorial.html) n'a qu'une déclaration using sur l'espace de noms std. –