関数ポインタが定義され、基底クラスに値が割り当てられている場合。そして、それから派生したクラスから関数を呼び出すために使用されなければなりません。どうすればそれをすることができますか?C++:基底クラスで定義された関数ポインタによって派生した関数を呼び出す
Thisは、関数をポインタで呼び出す例を示しています。しかし、これはポインタが使用されているクラスと同じクラスで定義されている場合にのみ機能します。
Thisは、親クラスの関数を呼び出す例を示します。私はこれに類似したものを試しましたが、うまくいかなかったのです。
From derived
(((Base)this)->*fncPtr)();
(((Base)this)->*(Base::fncPtr))();
上記の両方が機能しません。私を助けてください。 、Base
のメンバ関数へのポインタにキャスト
void (Derived::*derivedFncPtr)() = &Derived::someMemberFunction;
まず:
void (Base::*baseFncPtr)() = static_cast<void (Base::*)()>(derivedFncPtr);
を次に、それを呼び出す:(*this
を仮定することであるDerived
のメンバ関数へのポインタが与えられる
このような場合は、_Template Function Pattern_を関数ポインタよりもうまく使用してください。 –
これは解決策がないことを示唆していますか?テンプレート機能パターンとは別に – PHcoDer
私はそれがより良い、より簡単な解決策であることを示唆しています。 –