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 の形式に移行されました。これが問題の原因である可能性がありますか?どうすれば修正できますか?
編集:これは新しい VS バージョンにも適用されるため、 visual-studio-2015を追加