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();
}
私は信号の完全な初心者であるため、それらを使用することを意図しているため、それらを使用しているかどうかは完全にはわかりません.