1
我的boost :: function與模板函數一起出現問題。情景如下;在模板中使用boost :: function
我想在另一個稱爲「setter」的函數中運行一個函數。我的功能是一樣的東西
data.totalSize(TotalSize);
總計TOTALSIZE函數的輸入參數的類型是「uint32_t的」和輸出參數的類型是「無效的」。
所以我決定使用boost :: function;下面是我的代碼:
setter(boost::bind(&myIDL::payload::totalSize,boost::ref(data),_1),(TotalSize));
和setter方法實現
template<typename Outer>
inline void setter(boost::function<void(Outer)> myFunc, Outer myValue)
{
myFunc(myValue);
}
我將得到下面的編譯錯誤:
error: no matching function for call to setter(boost::_bi::bind_t<void, boost::_mfi::mf1<void,myIDL::payload, unsigned int>, boost::_bi::list2<boost::reference_wrapper<myIDL::payload>, boost::arg<1> > >, quint32&)'
看來,升壓::功能不理解我模板類型。所以我決定寫如下:
template<typename Outer>
inline void setter(boost::function<void(unit32_t)> myFunc, Outer myValue)
{
myFunc(myValue);
}
它的工作原理!所以我想知道如何解決我的問題。預先感謝您的幫助。
最好的問候, 禮
不要把'提升:: function',讓編譯器推導一個函數對象的類型。 'boost :: function'不能從'boost :: bind'返回 –
推斷出來親愛的@Prior,你能解釋一下嗎?其實我沒有得到你的解決方案。 – Reza