类对象赋值问题

octopus666 2009-05-19 11:05:30
一下代码是<数据结构与算法分析>第二版 ADTS,DATASTRUCTURES,AND PROBLEMOVLINGWITH C++ 里的队列章节的代码

Main.cpp
cin >> maxAddend;

Queue problemQueue;
for(int i = 1; i <= numProblems; i++)
{
AdditionProblem problem(maxAddend);//定义一个对象
problemQueue.enqueue(problem);//传一个对象,在这里好奇怪 对象怎么可以传给int的参数
编译器报错了

}

Queue.cpp
typedef int QueueElement;//头文件定义的
void Queue::enqueue(QueueElement &value)
{
int newBack = (myBack + 1) % QUEUE_CAPACITY;
if(newBack != myFront)
{
myArray[newBack] = value;
myBack = newBack;
}
else
{
cout << "队列已滿了";
return;
}


}




编译器报错
c:\projects1\queue\queue\main.cpp(27) : error C2664: 'Queue::enqueue' : cannot convert parameter 1 from 'AdditionProblem' to 'const QueueElement &'
1> Reason: cannot convert from 'AdditionProblem' to 'const QueueElement'


有什么办法改这代码呢
...全文
170 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2009-05-20
  • 打赏
  • 举报
回复
将你自己写的Queue里面的元素类型重新定义下
adventurelw 2009-05-20
  • 打赏
  • 举报
回复
定义一个转换成员
好像是
operator int() const
{
return myAnswer;
}
应该可以了。
lzh9955 2009-05-20
  • 打赏
  • 举报
回复
还是请尽量避免不明确的类型转换! 类型转换通常带来意想不到的结果!
octopus666 2009-05-20
  • 打赏
  • 举报
回复
<数据结构与算法分析>第二版 ADTS,DATASTRUCTURES,AND PROBLEMOVLINGWITH C++
以上代碼是书有误
把int 改为类名就可以了
蜥蜴枪王 2009-05-20
  • 打赏
  • 举报
回复
记得在Queue.cpp文件中加上#include"Main.h"
蜥蜴枪王 2009-05-20
  • 打赏
  • 举报
回复
参数类型不一致、LZ可以看看用强制转换、或者把typedef int QueueElement改为typedef AdditionProblem QueueElement看看?
octopus666 2009-05-19
  • 打赏
  • 举报
回复
       Main.cpp
cin >> maxAddend;

Queue problemQueue;
for(int i = 1; i <= numProblems; i++)
{
AdditionProblem problem(maxAddend);//定义一个对象
problemQueue.enqueue(problem);//传一个对象,在这里好奇怪 对象怎么可以传给int的参数
编译器报错了

}

Queue.cpp
typedef int QueueElement;//头文件定义的
void Queue::enqueue(QueueElement &value)
{
int newBack = (myBack + 1) % QUEUE_CAPACITY;
if(newBack != myFront)
{
myArray[newBack] = value;
myBack = newBack;
}
else
{
cout << "队列已滿了";
return;
}


}
AdditionProblem::AdditionProblem(int maxAddend)
{
myAddend1 = rand() % (maxAddend + 1);
myAddend2 = rand() % (maxAddend + 1);
myAnswer = myAddend1 + myAddend2;
}






编译器报错
c:\projects1\queue\queue\main.cpp(27) : error C2664: 'Queue::enqueue' : cannot convert parameter 1 from 'AdditionProblem' to 'const QueueElement &'
1> Reason: cannot convert from 'AdditionProblem' to 'const QueueElement'


[/Quote]有什么办法改这代码呢 在發一遍?
adventurelw 2009-05-19
  • 打赏
  • 举报
回复
编译器不是给出结果了么,说不能转换啊。。。。。。
不知道楼主希望问什么。
lpf000 2009-05-19
  • 打赏
  • 举报
回复
难道那个类有 类型重载操作 转为int
pengzhixi 2009-05-19
  • 打赏
  • 举报
回复
你队列里面的元素类型和你压入的元素类型不符合吧。
ltc_mouse 2009-05-19
  • 打赏
  • 举报
回复
typedef的QueueElement类型应该换成新的元素类型----类AdditionProblem?
mengde007 2009-05-19
  • 打赏
  • 举报
回复
cin >> maxAddend;
这里的maxAddend是一个对象??
bbb332 2009-05-19
  • 打赏
  • 举报
回复
不懂
帮顶

65,211

社区成员

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

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