観察するクラスと観察されるクラスがあるとしましょう。オブザーバーに通知したいのですが、提示された方法で。
監視されるクラスには、監視するクラスのメソッドへのポインターの配列があります。したがって、基本的に、監視対象クラスでnotifyObserversを呼び出すと、この配列を通過し、オブザーバーで必要な関数を呼び出すだけです。その解決策は私の先生によって提示されました、そして私はそれを機能させるのに苦労しています、彼はこの解決策が(オブザーバーデザインパターンのように)メソッドへのポインターだけをオブザーバーへのポインターを保持する必要がないことを悲しいです。しかし、誰がそれらを呼び出すべきかを知っているメソッドへのポインタをどのように保存するのですか?
私はこのようなことを試みました:
class A {
public:
void method();
}
A a;
void(A::*ptr)()=&a.method;
void (*ptr)()=&a.method;
これは明らかに機能しませんでした。それを機能させる方法さえありますか?