im newty.deのLars HaendelのFunctor tutorialに続いてコールバックシステムを設定します。私はちょっと混乱しています。私は誰かが私を助けることを望んでいます。ここでC++ Functorコールバックの設定
は私のFunctorテンプレートは、私がやりたいことは基本的に他の.dllが私HookGameEvent()関数を使用すると、ゲームイベントが呼び出されたとき、私はベクトルを介して実行することができます許可され
#include <igameevents.h>
// Abstract Base Class (Functor)
class TBaseCallback
{
public:
// two possible functions to call member function. virtual cause derived
// classes will use a pointer to an object and a pointer to a member function
// to make the function call
virtual void operator()(IGameEvent *pEvent){}; // call using operator
virtual void Call(IGameEvent *pEvent) {}; // call using function
};
// Derived Template Class
template <class TClass> class TEventCallback : public TBaseCallback
{
private:
void (TClass::*funcPtr)(IGameEvent*); // pointer to member function
TClass* thisPtr; // pointer to object
public:
// constructor - takes pointer to an object and pointer to a member and stores them in two private variables
TEventCallback(TClass* _thisPtr, void(TClass::*_funcPtr)(const char*))
{ thisPtr = _thisPtr; funcPtr=_funcPtr; };
// override operator "()"
virtual void operator()(IGameEvent *pEvent)
{ (*thisPtr.*funcPtr)(pEvent); }; // execute member function
// override function "Call"
virtual void Call(IGameEvent *pEvent)
{ (*thisPtr.*funcPtr)(pEvent); }; // execute member function
};
あり| |私のフックのリスト、イベント名が一致するかどうかを確認し、必要に応じてコールバックを実行します。私が混乱しているのは、このようなHookEvent構造体にコールバックを格納する方法です。
std::vector<EventHook*> m_EventHooks;
struct EventHook
{
char *name;
EventHookMode mode;
//TEventCallback<IGameEvent*> pEventCallback;
};
私は今はコメントアウトしていますが、私は混乱しているものと混乱しているものを明確にしています。誰でも助けてもらえれば大いに感謝します。
TEventCallbackクラスの関数ポインタが(const char *)パラメータで定義されていますが、コード内で(IGameEvent *)を使用して呼び出すことに気づかずにいました。 – Daemin
typedefing関数型の値を指摘します。 @ブレット:もしあなたがエラーメッセージを扱っているなら、それをあなたの質問に含めれば、私たちにとって非常に役に立ちます。コードがあなたが他の理由で望むものを達成することに失敗している場合は、それらのことを教えてもらえます。あなたが何を起こそうとしているのか、実際に何が起こっているのかを教えてください。そうでなければ、ただ推測しています。 – outis
私が持っていた問題は、それを構造体に入れる方法でした。(const char *)は、そのチュートリアルを使用していたときから残されていました。 –