2013-12-13 67 views
0

使用:錯誤:不能分配抽象類型的對象「FRONTEND_RFInfo_In_i

紅鷹1.9/CentOS的6.4(32位)/ C++實現

創建新FRONTEND :: TUNER設備

使用默認設置代碼生成

當我添加FRONTEND數字調諧器所需的以下端口並重新生成代碼時,會發生以下錯誤消息。

<ports> 
    <provides repid="IDL:FRONTEND/DigitalTuner:1.0" providesname="DigitalTuner"/> 
    <provides repid="IDL:FRONTEND/RFInfo:1.0" providesname="RFInfo"/> 
</ports> 

錯誤消息(問題窗口):

cannot allocate an object of abstract type ‘FRONTEND_RFInfo_In_i’ TestFrontEndDevice_base.cpp /TestFrontEndDevice/cpp line 50 C/C++ Problem

錯誤消息(控制檯):

port_impl.h:56: note: because the following virtual functions are pure within ‘FRONTEND_RFInfo_In_i’:

/usr/local/redhawk/core/include/redhawk/FRONTEND/RFInfo.h:323: note: virtual void FRONTEND::_impl_RFInfo::rf_flow_id(const char*)

/usr/local/redhawk/core/include/redhawk/FRONTEND/RFInfo.h:325: note: virtual void FRONTEND::_impl_RFInfo::rfinfo_pkt(const FRONTEND::RFInfoPkt&)

make: * [TestFrontEndDevice-TestFrontEndDevice_base.o] Error 1

回答

1

似乎存在於一個錯誤代碼生成RFInfo類。如果將port_impl.h文件中生成的代碼的簽名與上述「未實現」代碼的簽名進行比較,您會注意到port_impl.h中的rf_flow_id函數沒有const關鍵字。關於rfinfo_pkt方法也是如此。它缺少const關鍵字和函數聲明中的&符號。

爲了解決這個問題,只需在const port和ampersand中添加port_impl.h文件聲明中的相應位置和port_impl.cpp文件中的定義即可。

1

這是已知的問題,已針對1.9.1版本進行了修復。

問題是由於 中生成的port_impl。*文件與 父/基類中的RFInfo端口函數簽名不同,後者也碰巧是純虛擬的。要解決此問題 在你的代碼,你需要添加「常量」,以rf_flow_id,都 「常量」和「&」,以rfinfo_pkt,如下圖所示:

在port_impl.h:

-  void rf_flow_id(char* data); 
+  void rf_flow_id(const char* data); 

-  void rfinfo_pkt(FRONTEND::RFInfoPkt data); 
+  void rfinfo_pkt(const FRONTEND::RFInfoPkt& data); 

在port_impl.cpp:

-void FRONTEND_RFInfo_In_i::rf_flow_id(char* data) 
+void FRONTEND_RFInfo_In_i::rf_flow_id(const char* data) 

-void FRONTEND_RFInfo_In_i::rfinfo_pkt(FRONTEND::RFInfoPkt data) 
+void FRONTEND_RFInfo_In_i::rfinfo_pkt(const FRONTEND::RFInfoPkt& data) 
+0

這修復當前錯誤不幸的是我還是我得到以下鏈接錯誤不能得到一個版本。 /usr/local/redhawk/core/lib/libfrontendInterfaces.so:對'BULKIO :: PrecisionUTCTime :: operator << =(cdrStream&)'的未定義引用/'r/local/redhawk/core/lib/libfrontendInterfaces.so:undefined參考'BULKIO :: PrecisionUTCTime :: operator >> =(cdrStream&)const' –

+0

已回答[here](http://stackoverflow.com/questions/20621726/linker-error-when-creating-1-9-frontend- ) - 使用默認設備創建-從-IDE – jkb

相關問題