Thrift C ++ Обеспечение компиляции проблем Учебное пособие - Невозможно создать абстрактный класс на TProcessor - PullRequest
1 голос
/ 02 мая 2011

Я пытаюсь скомпилировать учебник по c ++, приведенный в Thrift 0.5.0. Я следовал инструкциям в руководстве \ README и смог без проблем сгенерировать пример кода калькулятора. Но когда я пытаюсь скомпилировать Calculator_server.cpp, я получаю сообщение об ошибке:

error C2259: 'tutorial::CalculatorProcessor' : cannot instantiate abstract class due to following members: 
'bool apache::thrift::TProcessor::process(boost::shared_ptr<T>,boost::shared_ptr<T>,void *)' : is abstract with 
[ T=apache::thrift::protocol::TProtocol ]

Есть идеи, почему это происходит? Я не трогал TProcessor, и он указан как абстрактный объект. (Примечание: я также компилирую в VC ++ с использованием Apache THRIFT-1031 Patch)

Ответы [ 2 ]

0 голосов
/ 02 мая 2011

Причина, по которой вы получаете эту ошибку, заключается в том, что вы не можете создавать объекты Abstract Class Aapache::thrift::TProcessor - абстрактного класса, что означает, что он имеет чисто виртуальные методы, либо напрямую определенные в классе, либо унаследованные от базового класса..

В вашем случае это явно последнее.

То, что вы хотите сделать, это реализовать унаследованный чисто виртуальный метод bool apache::thrift::TProcessor::process(), сигнатура методов должна быть точно такой же.оставляя базовый чистый виртуальный метод без изменений.А твой класс все еще абстрактный.Отсюда и сообщение об ошибке.

0 голосов
/ 02 мая 2011

Ну, это то, что есть, по-видимому, bool apache :: thrift :: TProcessor :: process (..) не реализован в shared :: SharedServiceProcessor

...