C++ c++;将用户定义的类插入到映射中
我已经四处寻找了相当长的一段时间,我认为我已经把大部分的片段整合在一起了,但是我的代码仍然无法工作 我有一张地图C++ c++;将用户定义的类插入到映射中,c++,stdmap,C++,Stdmap,我已经四处寻找了相当长的一段时间,我认为我已经把大部分的片段整合在一起了,但是我的代码仍然无法工作 我有一张地图 map<Number, Entry> chainList; 地图链表; 还有一个课程号和条目,这个条目我们现在不必担心,因为我很确定有一半是正确的 in Number.h class Number { public: //Public Functions //Constructor/Destructor Num
map<Number, Entry> chainList;
地图链表;
还有一个课程号和条目,这个条目我们现在不必担心,因为我很确定有一半是正确的
in Number.h
class Number
{
public:
//Public Functions
//Constructor/Destructor
Number(int len);
Number(string copy);
Number(const unsigned char *copy, int len);
Number(const Number& in);
~Number();
.......
.......
friend void swap(Number& first, Number& second);
bool operator<(const Number& rhs) const;
Number& operator=(Number &rhs);
private:
//our binary number array
unsigned char *num;
//hold the length used, and maxsize of the array
int length;
};
编号为.h的
班号
{
公众:
//公共职能
//构造函数/析构函数
数字(整数);
编号(字符串副本);
编号(常量无符号字符*副本,整数长度);
编号(常数编号和英寸);
~Number();
.......
.......
朋友无效交换(编号和第一,编号和第二);
布尔运算符(右侧长度)
{
返回false;
}
对于(int i=0;ilength;i++)
{
如果(此->num[i]>rhs.num[i])
{
返回false;
}
否则如果(此->num[i]
然而,当我尝试在地图中插入一个项目时,我得到一个seg错误
in Database.cpp
....
chainList.insert(pair<Number, Entry>(*(tempEntry -> msgHash), *tempEntry));
.....
Database.cpp中的
....
插入(成对(*(tempEntry->msgHash),*tempEntry));
.....
其中tempEntry->msgHash是一个数字*-动态分配
我的问题是什么?另一个选择是,我有一个函数,它可以类型化并返回一个C++字符串,我的问题是STD::LeSube函数是否在语句中间用空字符工作,我知道它是按词表顺序工作的,但是它是第一个null吗?< /P> < P>我认为问题在<代码>操作长度> /COD>,<代码> DELTE> []/COD>等等。只需对向量执行
std::swap()
,就完成了。您可能应该发布析构函数和其他构造函数,如果它们在程序中使用。这些构造函数不用于此函数,此函数涉及从sqlite数据库获取blob数据,当那些构造器被用于数学运算时,我看到了你的第一部分,它是正确的,我实际上在你说它之前一分钟就注意到了,不幸的是,测试它没有用!现在我已经更新了cop和swap习惯用法,但是我的函数仍然失败!我相信这是一句话,我会再测试一点,看看我有90%的把握你回答了我的问题(至少是我要求的),我会接受它,一旦我尝试一些事情,以确保这些错误得到解决
in Database.cpp
....
chainList.insert(pair<Number, Entry>(*(tempEntry -> msgHash), *tempEntry));
.....
if (this->length > rhs.length)
return false;
for (int i = 0; i < rhs.length; i++)
....
if (this->length > rhs.length)
return false;
if (this->length < rhs.length)
return true;
for (int i = 0; i < rhs.length; i++)
....
Number& Number::operator=(Number rhs)
{
swap (*this, rhs);
return *this;
}