我已经通过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的帖子中的代码已经修复,因为这个答案出来了。你可能想要修改你的答案。 –