用户定义队列的前端功能
template<class Type>
Type queueType<Type>::front()
{
if(!isEmptyQueue());
return list[queueFront];
}
int main()
{
struct process
{
int burst;
}pro;
int tq=2;
pro.burst=10;
Queue<process> RR;
RR.enQueue(pro);
RR.front().burst=RR.front().burst - tq;
}
当我尝试运行此行时:
RR.front().burst=RR.front().burst - tq;
它出现以下错误:
using temporary as lvalue [-fpremissive]
这个错误背后的原因是什么?还有其他方法来执行此设置吗?请给我一个更好的解决方案来执行此操作。
答案 0 :(得分:4)
如果您希望能够使用front()
修改第一个元素,则需要返回对它的引用,而不是副本:
Type & front();
^
您还需要在;
之后删除虚假的if(!isEmptyQueue())
,如果它为空,可能会执行类似的操作。
答案 1 :(得分:2)
front()
应该返回Type&
。否则,在实际返回之前,要返回的值是复制。
template<class Type>
Type& queueType<Type>::front() { ... }