は、私は、オペレータ<実装では、次のデータがあります。std :: set - 演算子を実装する正しい方法<?
enum eDataSetType
{
eData1,
eData2
};
struct LocationData
{
bool operator < (const LocationData& other) const
{
if (mFileName < other.mFileName ||
mDataSet < other.mDataSet ||
mChunkId < other.mChunkId ||
mAnimIndex < other.mAnimIndex)
{
return true;
}
return false;
}
eDataSetType mDataSet;
std::string mFileName;
Uint32 mChunkId;
Uint32 mAnimIndex;
};
をしかしstd::set<LocationData>::insert
を使用したとき、私は時々、次のメッセージが出ます:
---------------------------
Microsoft Visual C++ Runtime Library
---------------------------
Debug Assertion Failed!
Program: C:\Windows\system32\MSVCP120D.dll
File: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xtree
Line: 1795
Expression: invalid operator<
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)
---------------------------
Abort Retry Ignore
---------------------------
はなぜ?
適切な注文を作成していないためです。 –
オペレーターが発注を定義していません。それはごみです。どのようにアイテムを注文したいですか? –
など。あなたのロジックで '(1,0)<(0,1)'と '(0,1)<(1,0)'は真です。 –