C++的error c2664
//头文件queue2.h
#include<iostream>
#include "E:\C++STL\ftsoftds_VC++6\include\d_pqueue.h"
using namespace std;
template<typename T>
class priorityData
{
public:
T data;
int priotity;
priorityData(const T& t,const int& x):data(t),priotity(x){}
friend bool operator<(const priorityData& lhs,const priorityData& rhs)
{
return lhs.priotity<rhs.priotity;
}
friend bool operator>(const priorityData& lhs,const priorityData& rhs)
{
return lhs.priotity>rhs.priotity;
}
friend ostream& operator<<(ostream& ostr,priorityData& pd)
{
ostr<<pd.data<<" "<<pd.priotity<<endl;
return ostr;
}
};
template<typename T>
class miniQueue
{
public:
miniQueue(){};
miniQueue(const miniPQ<T>& p,int x):pD(p),priorityLevel(x){};
int size()
{
return pD.size();
}
bool empty()
{
return pD.empty();
}
void pop()
{
pD.pop();
}
priorityData<T>& top()
{
pD.top();
}
const priorityData<T>& top()const
{
pD.top();
}
void push(const priorityData<T>& pdata)
{
pD.push(pdata);
priorityLevel++;
}
private:
miniPQ<priorityData<T>,less<priorityData<T> > > pD;
int priorityLevel; //优先级别
};
//.cpp
#include <iostream>
#include<string>
#include"queue2.h"
#include "E:\C++STL\ftsoftds_VC++6\include\d_random.h"
using namespace std;
int main()
{
miniQueue<priorityData<string> > mq;
randomNumber rad; //随机数类对象
string str[]={"abc","bcd","cde","def","efg"};
int strSize=sizeof(str)/sizeof(string);
for(int i=0;i<strSize;i++)
{
priorityData<string> pdata(str[i],rad.random(50)); //rad.random(50)产生一个0-49的随机整数
mq.push(pdata); //产生error c2664错误 “miniQueue<T>::push”: 不能将参数 1 从“priorityData<T>”转换为“const priorityData<T> &”
}
int n=mq.size();
cout<<"miniQueue类对象中的元素数="<<n<<endl;
for(int i=0;i<n;i++)
{
cout<<"该对象中的元素如下:"<<endl;
cout<<mq.top()<<" ";
mq.pop();
}
return 0;
}
编译产生error c2664错误 “miniQueue<T>::push”: 不能将参数 1 从“priorityData<T>”转换为“const priorityData<T> &”。请高师指点。谢谢。