エンジンでレベジエータクラスを作成するのに忙しかったですが、メンバ関数を別のメンバ関数のパラメータとして渡してしまいました。メンバ関数をメンバ関数のパラメータとして渡す
まず私は、typedefの
typedef void (LevelEditor::*CallFunctionPtr)();
は、その後、私は、ユーザーがhitregionに彼のマウスでクリックしたかどうかを確認するためにメンバ関数を作った作りました。そうであれば、別の関数を呼び出す必要があります。だから私は、その後
void LevelEditor::CheckClickCollision(HitRegion* region, CallFunctionPtr callFunctionPtr)
{
if(GAME_ENGINE->GetLButtonMouseState())
{
if(!m_bIsLeftPressed && region->HitTest(m_MousePosition))
(this->*callFunction)();
m_bIsLeftPressed = true;
}
else
m_bIsLeftPressed = false;
}
LevelEditor.cpp
2つのパラメータLevelEditor.h
void CheckClickCollision(HitRegion* region, CallFunctionPtr callFunctionPtr);
で私の最初のメンバ関数をしたIました2つの愚かな例のメンバ関数:
LevelEditor .h
void LevelUp();
void LevelDown();
LevelEditor.cpp
void LevelEditor::LevelUp()
{
++m_iCurrentLevel;
}
void LevelEditor::LevelDown()
{
if(m_iCurrentLevel > 0)
--m_iCurrentLevel;
else
return;
}
そして今、私はヒットがあるかどうかをチェックするために、すべてのダニ、その関数を呼び出したいです。だから私のダニ機能に:
エラー:void型(LevelEditor :: *)()の引数 "型のパラメータと互換性がありません"
CheckClickCollision(m_LeftArrowRegionPtr, LevelDown);
CheckClickCollision(m_RightArrowRegionPtr, LevelUp);
そしてここで私はLevelDownとLevelup上のエラーを取得しますCallFunctionPtr *は」
いけない、別のものを試してみました。それを修正する方法を知っているものは何もしてみ
これまでに 'std :: mem_fn'と考えられましたか? – chris
これはまだ分かっていませんが、私はそれを探します。 Thnx;) – Thore