C++的error c2664

YUSHUIHE 2016-11-30 08:33:31
//头文件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> &”。请高师指点。谢谢。
...全文
489 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
YUSHUIHE 2016-12-13
  • 打赏
  • 举报
回复
还是编译不成功,但也要衷心地谢谢各位老师的回复。
yshuise 2016-12-11
  • 打赏
  • 举报
回复
\改为\\
yshuise 2016-12-11
  • 打赏
  • 举报
回复
#include "E:\C++STL\ftsoftds_VC++6\include\d_pqueue.h" \改为\\
YUSHUIHE 2016-12-11
  • 打赏
  • 举报
回复
谢谢各位,按上面回复的还未编译成功。
paschen 版主 2016-11-30
  • 打赏
  • 举报
回复
参数类型不对呗 void push(const priorityData<T>& pdata) 改成 void push(const T& pdata) 才一致
ID870177103 2016-11-30
  • 打赏
  • 举报
回复
miniQueue<priorityData<string> > mq 说明T是priorityData<string>类型,那么push函数的参数其实是const priorityData<priorityData<string>>&类型的

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧