1
我有這樣的代碼:仿函數+成員指針來創建對象的信號
// signal supporter parent
class signalable {};
template <class typeT = signalable>
typedef void (typeT::*trig)(std::string);
template <class typeT = signalable>
class trigger
{
private:
typeT* instance;
typeT::trig fun;
public:
trigger(typeT* inst, typeT::trig function)
: instance(inst), fun(function)
{}
void operator()(std::string param)
{
(instance->*fun)(param);
}
};
我得到許多編譯錯誤的,我敢打賭,專家們都知道的。我只是對這個背景感到困惑。
我想做的事情很清楚:將指針指向一個對象,並指向其中一個成員函數,以製作一個函數並在程序中傳遞它。
希望你的幫助和「更正」。
謝謝!
本Ç回答了你的問題,但你可能想看看進入[觀察者模式(http://en.wikipedia.org/ wiki/Observer_pattern)爲我認爲是你的**原始**問題的一個很好的方法。 – smocking 2012-04-21 11:42:49
@smocking我很欣賞你的觀點,這是我之前處理過的一個案例,但在這種情況下,觀察者模式是我的目標,因爲在我的代碼事件中,要以「鏈式」方式傳播,而不是傳播到多個事件被調用者。無論如何,感謝幫助我觀察對比。 – Haix64 2012-04-21 12:01:40
我不確定我是否理解爲什麼你會想要這種信號,但是你不能通過讓你的「鏈式」信號類繼承Observer和Observable接口來擴展一些模式嗎? – smocking 2012-04-21 12:43:42