0
我正在創建一個MVC應用程序,我希望模型能夠將輸出文本發送到GUI來顯示。這是使用升壓信號的正確方法嗎?
有幾個人推薦函數指針,但我現在已經瞭解到,如果你傳遞一個成員函數的函數指針,你還必須傳遞一個指向該對象的指針(爲什麼不只是傳遞對象指針,所以方法可以是呼籲它?)
無論如何,我也被推薦使用boost :: signals2。我已經實現了一個非常簡單的工作示例。我基本上將信號綁定到GUI對象的函數。然後將指向信號的指針傳遞給可觸發信號的對象。請參見下面的代碼...
struct GUI
{
void talk()
{
cout << "hello" << endl;
}
};
class Person {
public:
Person(){}
Person(const signal<void()>* sig) : sig(sig){}
virtual ~Person(){}
void testSig()
{
(*sig)();
}
private:
const signal<void()>* sig;
};
int main() {
boost::signals2::signal<void()> sig;
GUI gui;
sig.boost::signals2::connect(boost::bind(&GUI::talk, &gui));
Person tom(&sig);
tom.testSig();
}
,就像我跟信號的總初學者,我不能完全肯定,如果我使用他們,因爲他們的目的使用。