[英]Adding a b2vec2 in a map with std::pair key and value
嘗試向地圖添加元素時出現錯誤,這是我的簡化代碼:
我有一張地圖:
std::map<std::pair<std::string, std::pair<int, b2Vec2> >, std::pair<std::string, std::pair<int, b2Vec2> > > myMap; `
b2Vec2 rVec (1, 1)
std::pair<std::string, std::pair<int, b2Vec2> > partA (std::make_pair ("test", std::make_pair(1, rVec ) ) );
std::pair<std::string, std::pair<int, b2Vec2> > partB (std::make_pair ("testb", std::make_pair(1, rVec ) ) );`
myMap[partA] = partB; //When I add this line i get an error when compiling.`
我收到錯誤:“對二進制表達式無效的操作數('const b2Vec2'和'const b2Vec2')。” 如果我在myMap
定義和初始化myMap
每個b2Vec2類型都替換為int類型,則它將起作用。 所以我認為b2Vec2只是一個問題,但我不明白。
在std::map
用作鍵的類型需要為其定義一個小於比較運算符( operator<
)。 std::pair
定義了其中之一,這要求為該對中的類型定義operator<
。
在您的情況下,由於b2Vec2
類型未定義operator<
因此出現了編譯錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.