0
我想實現觀察者模式的捕獲,我需要添加新的功能到每個觀察員稍後在項目中。Boost ::綁定對象佔位符
class Obsevers {
public:
virtual ~Obsevers() {}
};
class TestObserver : public Obsevers {
public:
void print1(int i) {
std::cout << i << std::endl;
}
};
class TestObserver2 : public Obsevers {
public:
void print2(int i, char c) {
std::cout << i << " , " << c << std::endl;
}
//possible new functions here later
};
我的通知方法如下:
template<typename Type, typename Notify>
void NotifyObserver(Notify notify) {
typedef std::list<Obsevers*>::iterator iter;
iter it = m_observers.begin();
iter end = m_observers.end();
for(; it != end; ++it) {
Type * o = dynamic_cast<Type*>(*it);
if(o == NULL) continue;
notify(o);
}
}
要撥打電話通知代碼如下。
NotifyObserver<TestObserver2>(boost::bind(&TestObserver2::print2, _1, 32, 'b'));
現在給出以結合與我的問題是使用佔位符(_1)爲對象參數代碼上述塊的上下文正確,或者這是未定義的行爲?
關於綁定的boost文檔沒有指定僅爲函數參數的對象使用佔位符。
我明白了,我並不真正瞭解boost :: mem_fn,所以我會讀它是如何工作的。謝謝。 – andre
閱讀更多內容後,我明白了。謝謝。 – andre