c++问题 涉及模板和运算符重载

时间:2021-05-23 17:34:23
刚开始学C++遇到一些问题,代码如下,编译出现错误
/*c:\vs2010\template_2\template_2\template_2.cpp(32): error C2143: 语法错误 : 缺少“;”(在“)”的前面)
1>          c:\vs2010\template_2\template_2\template_2.cpp(48): 参见对正在编译的函数 模板 实例化“void BubblesSort<int>(T *,int)”的引用
1>          with
1>          [
1>              T=int
1>          ]
1>
1>生成失败。*/

求告知问题出在哪里,多谢!
#include "stdafx.h"
#include "iostream"
using namespace std;
class Clock
{
private:
int hour;
int minute;
int second;
public:
Clock(int hour,int minute,int second):hour(hour),minute(minute),second(second){}
void print()
{
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
bool operator<(Clock &another)
{
int temp=(hour-another.hour)*3600+(minute-another.minute)*60+(second-another.second);
if(temp<0)return true;
else return false;
}
};
template<class T>
void BubblesSort(T *arr,int n)
{
T temp;
int i,j;
for(i=0;i<n-1;i++)
for(j=n-1;j>i,j--)
{
if(arr[j]<arr[j-1])
{
temp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
}
}
}

int _tmain(int argc, _TCHAR* argv[])
{
int i;
int m_iarray[5]={10,8,20,15,5};
Clock m_tarray[3]={Clock(12,12,12),Clock(7,7,7),Clock(10,10,10),};
BubblesSort(m_iarray,5);
BubblesSort(m_tarray,3);
for(i=0;i<5;i++)
cout<<m_iarray[i];
cout<<endl;
cout<<"----------"<<endl;
for(i=0;i<3;i++)
m_tarray[i].print();

return 0;
}


1 个解决方案

#1


类方法中加一行Clock() {}
for(j=n-1;j>i,j--)把逗号改成分号

#1


类方法中加一行Clock() {}
for(j=n-1;j>i,j--)把逗号改成分号