Я занят созданием класса leveleditor в движке, но я застрял в передаче функции-члена в качестве параметра другой функции-члена.Передача функции-члена как параметра функции-члена
Сначала я сделал ЬурейеЕ
typedef void (LevelEditor::*CallFunctionPtr)();
Тогда я сделал функцию чтобы проверить, если пользователь щелкает его мышью на hitregion. Если это так, нужно вызвать другую функцию. Так что я свою первую функцию-член с 2 параметрами
LevelEditor.h
void CheckClickCollision(HitRegion* region, CallFunctionPtr callFunctionPtr);
LevelEditor.cpp
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 .h
void LevelUp();
void LevelDown();
LevelEditor.cpp
void LevelEditor::LevelUp()
{
++m_iCurrentLevel;
}
void LevelEditor::LevelDown()
{
if(m_iCurrentLevel > 0)
--m_iCurrentLevel;
else
return;
}
А теперь я хочу вызова этой функции каждый тик, чтобы проверить, есть ли удар. Так что в моей клеща функции:
CheckClickCollision(m_LeftArrowRegionPtr, LevelDown);
CheckClickCollision(m_RightArrowRegionPtr, LevelUp);
И здесь я получаю ошибку на LevelDown и Levelup:
Ошибка: Аргумент типа пустоте (LevelEditor :: *)() «несовместима с параметром типа» CallFunctionPtr *»
Dont знаю, как это исправить. Пробовал разные вещи, ничего не получалось
Считается, что 'std :: mem_fn'? – chris
Не знаю этого, но я буду его искать. Thnx;) – Thore