我已經通過Cplusplus.com上的map :: map reference進行了讀取,我仍然不確定如何使其工作。如果有人能給我一些建議,我會非常感激。將自定義對象插入到std :: map中
所有我想要做的就是創建一個映射如下所示:
std::map<TriSpec, unsigned int> TriSpecMap;
然後我要插入到它:
result = TriSpecMap.insert(std::make_pair(triSpecObject, anUnsignedInt));
任何人都可以向我解釋,如果我的超載正確的操作符,如果我使用的函數/格式正確?當我查看result.second時,當我知道被插入的對象應該已經存在於地圖中時,總是如此。以下是我的TriSpec頭和.cpp
//TriSpec.h
#ifndef TRISPEC_H
#define TRISPEC_H
class TriSpec
{
public:
TriSpec(void);
~TriSpec(void);
unsigned int m_position;
};
bool operator< (const TriSpec& lhs, const TriSpec& rhs);
#endif
//TriSpec.cpp
#include "TriSpec.h"
TriSpec::TriSpec(void){}
TriSpec::~TriSpec(void){}
bool operator< (const TriSpec& lhs, const TriSpec& rhs)
{
if (lhs.m_position < rhs.m_position) return true;
else return false;
}
它不會編譯的另一個原因是'T C :(:(void)'函數簽名(或任何正確的成員函數形式)。 – moshbear
@moshbear:爲什麼不能編譯?這不是從C繼承的「特徵」之一嗎? –
OP的帖子中的代碼已經修復,因爲這個答案出來了。你可能想要修改你的答案。 –