C++ boost::bind 函數參數對數組、指標的支援不夠好?歡迎指教

來源:互聯網
上載者:User

我們先看看下面一段代碼:直接使用數組,即StreamConfigTable數組作為bind函數參數,PersistentStreamSettingsToDevice函數的第一個參數為數組形式StreamSetting_t StreamConfigTable[]。大家知道,數組名作為函數參數時候,實際退化為一個指標。

ReturnStatus CServiceEngine::SaveStreamConfigurations(StreamSetting_t StreamConfigTable[], int resourceStreamId , int VideoSourceIndex, PelcoStreamSetting_type_e SettingType){TRACE("%s, %d, Start a thread to save stream configurations:%d", __FUNCTION__, __LINE__,resourceStreamId);boost::thread boost_thread(  boost::bind(&CServiceEngine::PersistentStreamSettingsToDevice, this, StreamConfigTable, resourceStreamId ,VideoSourceIndex ) );boost_thread.detach(); return SYS_OK;}



測試結果,當在PersistentStreamSettingsToDevice函數中直接以StreamConfigtable[i],即數組下表引用時,編譯可以通過,但運行時出現段錯誤。

於是猜測:boost::bind函數的參數對對象數組這種指標參數的支援不夠好。

為了驗證,將PersistentStreamSettingsToDevice函數的第一個參數又數組形式改為容器形式:vector<PelcoStreamSetting_t> StreamConfigTable。

同時上述代碼調整為:

ReturnStatus CServiceEngine::SaveStreamConfigurations(StreamSetting_t StreamConfigTable[], int resourceStreamId , int VideoSourceIndex, PelcoStreamSetting_type_e SettingType){int i =0;vector<PelcoStreamSetting_t> ConfigTable;for ( i= SETTING_ENCODING; i<SETTING_END; i++ ) {ConfigTable.push_back(StreamConfigTable[i]);}TRACE("%s, %d, Start a thread to save stream configurations:%d", __FUNCTION__, __LINE__,resourceStreamId);boost::thread boost_thread(  boost::bind(&CServiceEngine::PersistentStreamSettingsToDevice, this,ConfigTable, resourceStreamId ,VideoSourceIndex ) );boost_thread.detach(); return SYS_OK;}


 

測試結果:程式編譯通過,運行也正常。

難道boost::bind函數對數組的支援真的不夠好?

歡迎知情者指教!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.