使用C++的地图出现有关问题

使用C++的map出现问题
具体是这样的,我要写一个词法分析器,用到了C++中的map数据结构,在map中插入map<Point ,char> OriginalCharAndPosition;类型的数据,其中Point是我自己定义的类,表示该字符在原

文中的位置。可运行时就出了个断言错,就是在插入数据时出现了问题,是在插入第二行数据时出现的错,该错误是由,Point中重载的<号引起的。具体情况见代码

主函数:
#include "DealCharacter.h"

int main()
{
DealCharacter dealcharacter;
/*map<Point*,char> OriginalCharAndPosition;
vector<int> dealCharPosition;*/
//OriginalCharAndPosition,dealCharPosition
dealcharacter.pro_process();
dealcharacter.coutchar();
return 0;
}


Point.h文件
#ifndef Point_h
#define Point_h
#include <iostream>
using namespace std;
class Point
{
private:
long x,y;
public:
Point(long a=0,long b=0);
Point(const Point &c);
bool operator<(const Point& p)const;

// Point(Point &c);
~Point()
{}
double Getx();
double Gety();
friend istream &operator>>(istream &stream,Point &p);
friend ostream &operator<<(ostream &stream,const Point &p);
};
#endif

Point.cpp文件
#include "Point.h"
Point::Point(long a,long b)
{
x=a;
y=b;
}

//birth::birth(birth &q):year(q.year),month(q.month),day(q.day){} 
Point::Point(const Point &c):x(c.x),y(c.y)
{

}
//Point::Point(Point &c)
//{
// x=c.x;
// y=c.y;
//}
double Point::Getx() 
{
return x;
}
double Point::Gety() 
{
return y;
}
bool Point::operator<(const Point& p)const
{

if(x<p.x)
{

return true;

}else if(y<p.y)
{
return true;
}else{

return false;
}

}


istream& operator>>(istream &stream,Point &p)
{
stream>>p.x >>p.y;
return stream;
}
ostream& operator<<(ostream &stream,const Point &p)
{
stream <<"X:"<<p.x<<"    Y:"<<p.y;
return stream;
}

DealCharacter.h文件
#ifndef DealCharacter_h
#define DealCharacter_h
#include <map>
#include <vector>
#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>
#include <conio.h>
#include "Point.h"
class DealCharacter{

private:
//用于表示在vector中的当前位置
 int i;
map<Point ,char> OriginalCharAndPosition;
vector<int> dealCharPosition;
public:
void pro_process();
void coutchar();
};
#endif

DealCharacter.cpp文件
#include "DealCharacter.h"
//map<Point*,char> OriginalCharAndPosition,vector<int> dealCharPosition
void DealCharacter::pro_process()
{
cout<<"coming to DealCharacter"<<endl;
ifstream cinf("G:/Programming/C++/source.txt",ios::in);
int row=0,col=0;
bool changeRowANDCol=false;
char old_c='\0',cur_c;

//计数器,前一个字符,当前字符。
bool in_comment=false;

//状态标志,false表示当前字符未处于注释中。
while(cinf.read(&cur_c,sizeof(char))){

//从文件读一个字符

changeRowANDCol=false;
switch(in_comment){