Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;将用户定义的类插入到映射中_C++_Stdmap - Fatal编程技术网

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;
}