0
我有一個地圖集合中的對象指針,在幾個地方我需要遍歷集合並調用每個對象的成員函數。使用boost的集合中的成員函數代理
在我需要調用集合中的每個元素的每個成員函數的時刻,我添加了一個代理函數,它對調用關聯成員的集合進行迭代。
我想知道是否有可能使用boost來創建集合類中的模板函數,它將爲我在通用情況下處理這個問題?
答案:原來,這是很容易的,修改了我原來的例子,以便它可以作爲期望:
class Object
{
public:
void func1();
void func2(int a);
};
class ObjectCollection : public std::map<std::string, Object*>
{
public:
template <typename Func>
void invokeMember(Func func)
{
for (iterator it = begin(); it != end(); ++it)
{
it->second->func();
}
}
};
void test()
{
ObjectCollection collection;
// ...
collection.invokeMember(boost::bind(&Object::func1, _1));
collection.invokeMember(boost::bind(&Object::func2, _1, 42));
}
感謝您的回覆 - 我會嘗試一下,看看我能得到它。 – Derek
原來它非常簡單,它的工作原理與我想要的完全一樣,我只需要將_1佔位符添加到我的綁定中即可。 – Derek