errorC2679操作符重载,求诸位帮忙编译

errorC2679操作符重载,求各位帮忙编译
RT自己写了一个TIME类和SMSDATA类
TIME.h如下:
#ifndef _TIME_H
#define _TIME_H

#include <FSTREAM>
//#include <iostream>
#include <cstring>

using namespace std;

class TIME
{
private:
int hour;
int min;
int sec;
public:
bool operator== (const TIME& time)const;
bool operator< (const TIME& time)const;
friend ofstream& operator<< (ofstream& out, const TIME& time);
/*{
out << time.hour << ':' << time.min << ':' << time.sec;
    return out;
}*/
friend ifstream& operator>> (ifstream& in, TIME& time);
/*{
in >> time.hour;
getchar();   //去掉输入格式(时:分:秒)的冒号
in >> time.min;
getchar();
in >> time.sec;
    return in;
}*/
};

#endif
TIME.cpp如下:
#include "TIME.H"
#include <fstream>

//using namespace std;

bool TIME::operator== (const TIME& time)const
{
if(((this -> hour) == time.hour) && ((this -> min) == time.min) && ((this -> sec) == time.sec))
return true;
else
return false;
}

bool TIME::operator< (const TIME& time)const
{
if (this -> hour != time.hour)
{
return this -> hour < time.hour;

else if (this -> min != time.min)
{
return this -> min < time.min;
}
else
{
return this -> sec < time.sec;
}
}

ifstream& operator>> (ifstream& in, TIME& time)
{
in >> time.hour;
in.get();     //忽略文件流中下一个字符
//getchar();
in >> time.min;
in.get();
//getchar();   getchar()函数是从标准输入中读取数据,不能用来从文件流中读取
in >> time.sec;
return in;
}

ofstream& operator<< (ofstream& out, const TIME& time)
{
out << time.hour << ':' << time.min << ':' << time.sec;
return out;
}
SMSDATA.h如下:
#ifndef _SMSDATA_H
#define _SMSDATA_H

#include "TIME.H"
#include <FSTREAM>
//#include <iostream>
#include <string>

using namespace std;

class SMSDATA
{
private:
unsigned int day_id;
string send_nbr;
string acpt_nbr;
    int send_nbr_oprt;
int acpt_nbr_oprt;
TIME send_time;
//string send_time;   不方便比较函数数值比较时间
public:
    friend ofstream& operator<< (ofstream& out, const SMSDATA& smsdata)
{
out << smsdata.day_id << smsdata.send_nbr << smsdata.acpt_nbr 
<< smsdata.send_nbr_oprt << smsdata.acpt_nbr_oprt << smsdata.send_time;
    return out;
}
friend ifstream& operator>> (ifstream& in, SMSDATA& smsdata) //这里的SMSDATA& 不能是const引用,因为读入过程中改变了其值
{
in >> smsdata.day_id >> smsdata.send_nbr >> smsdata.acpt_nbr 
   >> smsdata.send_nbr_oprt >> smsdata.acpt_nbr_oprt >> smsdata.send_time;
     return in;
}
bool operator< (const SMSDATA& tmp)const;
};

#endif   
SMSDATA.cpp如下:
#include "SMSDATA.H"
//#include "TIME.H"
#include <fstream>

using namespace std;


ofstream& operator<< (ofstream& out, const TIME& time);
ifstream& operator>> (ifstream& in, TIME& time);


bool SMSDATA::operator< (const SMSDATA& tmp)const
{
return ((this -> send_time) < tmp.send_time);
}

/*ifstream& operator>> (ifstream& in, SMSDATA& smsdata) //重载的是>>结果复制过去忘改了还是<<了!!!检查了半天!
{
in >> smsdata.day_id >> smsdata.send_nbr >> smsdata.acpt_nbr
   >> smsdata.send_nbr_oprt >> smsdata.acpt_nbr_oprt >> smsdata.send_time;
return in;
}

ofstream& operator<< (ofstream& out, const SMSDATA& smsdata)
{
out << smsdata.day_id << smsdata.send_nbr << smsdata.acpt_nbr
<< smsdata.send_nbr_oprt << smsdata.acpt_nbr_oprt << smsdata.send_time;
return out;
}*/
main函数.cpp如下:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include "SMSDATA.H"
#include "TIME.H"

using namespace std;

int main()
{
ifstream infile("e:\\C++\\MyProjects\\GraduationThesis\\tb_sms.txt");
ofstream outfile("e:\\C++\\MyProjects\\GraduationThesis\\result.txt");
ofstream outfile2("e:\\C++\\MyProjects\\GraduationThesis\\sort.txt");
//string str;
SMSDATA temp_smsdata;
vector<SMSDATA> smsdata;
vector<SMSDATA>::iterator iter;
    if(infile.is_open())
{
if(outfile.is_open())
{
int i = 0;
     while(i < 50)
{
     //getline(infile, str);
         //outfile << str << endl;
infile >> temp_smsdata;
smsdata.push_back(temp_smsdata);
outfile << temp_smsdata;
     ++i;
}
}
else
{
       cout << "can't open the output file!" << endl;
     return 1;
}
}
else
{
cout << "can't open the input file!" << endl;
return 1;
}
    
if (outfile2.is_open())
{
cout << "can't open the input file!" << endl;
return 1;
}
sort(smsdata.begin(), smsdata.end());
for (iter = smsdata.begin(); iter != smsdata.end(); ++iter)
{
outfile2 << *iter << endl;
}

infile.close();
outfile.close();
outfile2.close();

/*ifstream infile("e:\\C++\\MyProjects\\GraduationThesis\\test.txt");
ofstream outfile("e:\\C++\\MyProjects\\GraduationThesis\\result.txt");
    TIME time1;
infile >> time1;   //TIME类只重载了文件流,没重载标准输入输出流,所以用cin或cout读入读出TIME类对象会报错
outfile << time1;
infile.close();
outfile.close();*/
return 0;
}
在SMSDATA.cpp中提示错误“errorC2679”就是没有找到接受“TIME”类型的右操作数的运算符(或没有可接受的转换)
这里我就不懂了啊,我明明重载了TIME的输入输出<< 和>>啊,为啥这里不对呢?
可是当我把SMSDATA.cpp中提示错误的地方屏蔽掉,在main函数中
TIME time;
cin>>time;
cout <<time;
这样就一定问题都没有而且能正确的运行,请问是什么问题呢???是我哪里的编译链接过程搞错了吗?还是怎样?希望大侠们帮忙用编译器帮忙运行下,看是不是我的编译器问题【ps.我用的VS2013】~求大侠指教啊!谢谢了!!!


------解决思路----------------------
嘿嘿,你跑这又开一贴,原来是这样用,我给你两段代码体会一下吧
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

class TIME
{
private:
int hour;
int min;
int sec;
public:
friend ofstream& operator<< (ofstream& out,const TIME& time);
friend ifstream& operator>> (ifstream& in,TIME& time);
};

ifstream& operator>> (ifstream& in,TIME& time)
{
in>>time.hour;
in>>time.min;
in>>time.sec;
return in;
}

ofstream& operator<< (ofstream& out,const TIME& time)
{
out<<time.hour<<':'<<time.min<<':'<<time.sec;
return out;
}

class SMSDATA
{
private:
unsigned int day_id;
string send_nbr;
string acpt_nbr;
int send_nbr_oprt;
int acpt_nbr_oprt;
TIME send_time;
public:
friend ofstream& operator<< (ofstream& out,const SMSDATA& smsdata);
friend ifstream& operator>> (ifstream& in,SMSDATA& smsdata);
};

ifstream& operator>> (ifstream& in,SMSDATA& smsdata)
{
in>>smsdata.day_id>>smsdata.send_nbr>>smsdata.acpt_nbr
>>smsdata.send_nbr_oprt>>smsdata.acpt_nbr_oprt;
in>>smsdata.send_time;
return in;
}

ofstream& operator<< (ofstream& out,const SMSDATA& smsdata)
{
out<<smsdata.day_id<<smsdata.send_nbr<<smsdata.acpt_nbr
<<smsdata.send_nbr_oprt<<smsdata.acpt_nbr_oprt;
out<<smsdata.send_time;
return out;
}

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

class TIME
{
private:
int hour;
int min;
int sec;
public:
friend std::basic_ostream<char,std::char_traits<char>>& operator<< (std::basic_ostream<char,std::char_traits<char>>& out,const TIME& time);
friend std::basic_istream<char,std::char_traits<char>>& operator>> (std::basic_istream<char,std::char_traits<char>>& in,TIME& time);
};

std::basic_istream<char,std::char_traits<char>>& operator>> (std::basic_istream<char,std::char_traits<char>>& in,TIME& time)
{
in>>time.hour;
in>>time.min;
in>>time.sec;
return in;
}

std::basic_ostream<char,std::char_traits<char>>& operator<< (std::basic_ostream<char,std::char_traits<char>>& out,const TIME& time)
{
out<<time.hour<<':'<<time.min<<':'<<time.sec;
return out;
}

class SMSDATA
{
private:
unsigned int day_id;
string send_nbr;
string acpt_nbr;
int send_nbr_oprt;
int acpt_nbr_oprt;
TIME send_time;
public:
friend ofstream& operator<< (ofstream& out,const SMSDATA& smsdata);
friend ifstream& operator>> (ifstream& in,SMSDATA& smsdata);
};

ifstream& operator>> (ifstream& in,SMSDATA& smsdata)
{
in>>smsdata.day_id>>smsdata.send_nbr>>smsdata.acpt_nbr
>>smsdata.send_nbr_oprt>>smsdata.acpt_nbr_oprt>>smsdata.send_time;
return in;
}

ofstream& operator<< (ofstream& out,const SMSDATA& smsdata)
{
out<<smsdata.day_id<<smsdata.send_nbr<<smsdata.acpt_nbr
<<smsdata.send_nbr_oprt<<smsdata.acpt_nbr_oprt<<smsdata.send_time;
return out;
}