我正在尝试编译Thrift 0.5.0中给出的示例c ++教程。我按照教程\ 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,它被列为抽象对象。 (注意:我也在使用THRIFT-1031 Apache Patch在VC ++中编译)
答案 0 :(得分:0)
好吧它是什么,显然bool apache :: thrift :: TProcessor :: process(..)没有在shared :: SharedServiceProcessor中实现
答案 1 :(得分:0)
你得到这个错误的原因是因为你不能创建Abstract Class
Aapache::thrift::TProcessor
的对象是一个抽象类,这意味着它有纯虚方法,或者在类中直接定义,或者继承自基类。
在你的情况下,显然是后者。
您要做的是实现继承的纯虚方法bool apache::thrift::TProcessor::process()
,方法的签名应该完全相同。您将保持基本纯虚方法不变。你的班级仍然是抽象的。因此错误信息。