Q
TR1函數多播
0
A
回答
3
您很可能希望:
void registerCallback(std::tr1::function<void (std::string)> cb)
{
this->callbacks.push_back(cb);
}
與std::tr1::function
對象,而不是單一的一個callbacks
容器(無論你喜歡)。調度時,迭代回調。
另外,如果你希望能夠在以後進行刪除回調,你可以做一些沿着這些路線:
// I use list because I don't want the iterators to be invalid
// after I add/remove elements
std::list<std::function<void(std::string)>> callbacks;
...
typedef std::list<std::function<void(std::string)>>::iterator callback_id;
callback_id register_callback(std::function<void(std::string)> f)
{
return callbacks.insert(callbacks.end(), f);
}
void unregister_callback(callback_id id)
{
callbacks.erase(id);
}
0
有一個序列而不是一個單一的功能(即一個vector<...>
),當回調時,迭代序列並調用。
e.g
std::vector<std::tr1::function<void (std::string)> > callbacks;
auto it = callbacks.begin(), end = callbacks.end();
for(; it != end; ++it)
(*it)("somestring");
0
把它們放在一個列表/向量。如果你必須單獨刪除它們,你必須包裝一些方法(因爲它們沒有可比性)。
相關問題
- 1. 鑄造一個TR1 ::函數爲void *
- 2. 可以tr1 ::函數swallow返回值嗎?
- 3. C++:給tr1 :: function對象分配函數
- 4. 如何用通用TR1函數對象包裝多個函數重載?
- 5. 使用std :: tr1 :: function(或boost :: function)創建多播事件
- 6. TR1 ::功能和tr1 ::綁定
- 7. TR1 :: bad_weak_ptr
- 8. 如何使用tr1函數並通過更改參數綁定函數?
- 9. 在函數中傳播多列
- 10. QSharedPointer VS std :: tr1 :: shared_ptr VS boost :: tr1 :: shared_ptr
- 11. C++用另一個函數包裝一個通用的std :: tr1 ::函數
- 12. 定義在TR1 unordered_map散列函數的結構體
- 13. 解決方法允許tr1 ::函數吞下返回值
- 14. 使用regex_replace函數時出錯<tr1/regex>
- 15. 訪問Tr1的內在型哈希函數/ unordered_map
- 16. 如何將'this'綁定到C++ TR1中的類函數?
- 17. tr1 :: function WINAPI
- 18. TR1 ::哈希uint64_t中
- 19. .NET Interop和TR1 shared_ptr
- 20. 怎樣的std :: TR1 ::函數獲取的簽名特徵參數和專業*
- 21. 使用C++生成隨機數TR1
- 22. 如何在Visual Studio 2010中使用tr1(tr1 :: function)?
- 23. C++ STL或TR1(不是boost :: tr1)只能在Windows上工作嗎?
- 24. 循環播放函數like_posts
- 25. JSyn函數播放聲音
- 26. 解碼數據包 - 廣播或多播
- 27. 廣播/多播包的數量
- 28. 嵌套從一個TR1 TR1 ::綁定<>對象:: bind()的一個新的呼叫TR1 :: bind()的
- 29. '不匹配'與成員回調函數使用std :: tr1 :: function的錯誤
- 30. TR1的地圖容器綁定一個成員函數(亞克西!)