使用:
Redhawk 1.9 / CentOS 6.4(32位)/ C ++实现
创建新的FRONTEND :: TUNER设备
使用代码生成的默认设置
当我添加FRONTEND Digital Tuner所需的以下端口并重新生成代码时,会出现以下错误消息。
<ports>
<provides repid="IDL:FRONTEND/DigitalTuner:1.0" providesname="DigitalTuner"/>
<provides repid="IDL:FRONTEND/RFInfo:1.0" providesname="RFInfo"/>
</ports>
错误消息(问题窗口):
无法分配抽象类型的对象 'FRONTEND_RFInfo_In_i'TestFrontEndDevice_base.cpp / TestFrontEndDevice / cpp line 50 C / C ++问题
错误消息(控制台):
port_impl.h:56:注意:因为以下虚函数是 纯粹在'FRONTEND_RFInfo_In_i'中:
/usr/local/redhawk/core/include/redhawk/FRONTEND/RFInfo.h:323:注意: virtual void FRONTEND :: _ impl_RFInfo :: rf_flow_id(const char *)
/usr/local/redhawk/core/include/redhawk/FRONTEND/RFInfo.h:325:注意: virtual void FRONTEND :: _ impl_RFInfo :: rfinfo_pkt(const FRONTEND :: RFInfoPkt&安培;)
make: * [TestFrontEndDevice-TestFrontEndDevice_base.o]错误1
答案 0 :(得分:1)
RFInfo类的代码生成中似乎存在错误。如果将port_impl.h文件中生成的代码的签名与未实现的&#34;未实现的&#34;的签名进行比较。您可以注意到,对于port_impl.h中的rf_flow_id函数,没有const关键字。关于rfinfo_pkt方法也是如此。它缺少const关键字和函数声明中的&符号。
要解决此问题,只需在port_impl.h文件中的声明和port_impl.cpp文件中的定义中的适当位置添加const关键字和&符号。