在我使用 Visual Studio 2013 Professional 中的 CryEngine2 SDK 构建的每个项目中,我一直遇到此错误一段时间。大多数时候,我只是从中编辑了函数:
void CMultipleGrabHandler::Reset()
{
std::for_each (m_handlers.begin(), m_handlers.end(), std::mem_fun (&CBaseGrabHandler::Reset));
std::vector <CAnimatedGrabHandler*>::iterator it = m_handlers.begin();
std::vector <CAnimatedGrabHandler*>::iterator end = m_handlers.end();
for ( ; it != end; ++it)
delete *it;
m_handlers.erase (m_handlers.begin (), m_handlers.end ());
}
对此:
void CMultipleGrabHandler::Reset()
{
}
我知道这不是解决问题的好方法,但它摆脱了'mem_fun' : is not a member of 'std'
错误。
我现在正在寻找解决这个问题的解决方案,因为我刚刚开始从事一个新项目,其中稳定性是关键;如果我删除身体不好CMultipleGrabHandler::Reset()
,因为它可能在某些情况下导致崩溃。我已经在互联网上浏览了这个问题的解决方案,但我没有找到任何东西(我找到的最接近的东西是对做什么的解释mem_fun
)。
我试过std::
起飞mem_fun
,但我只是得到一个mem_fun is undefined
错误,这表明这不是解决这个错误的正确方法。
该项目最初是在 Visual Studio 2005 中创建的,并在我第一次打开解决方案时迁移到了 Visual Studio 2013 的格式。这可能是问题的原因吗?如何修复?
编辑:添加了 visual-studio-2015,因为这也适用于新的 VS 版本。