修改结构的变量数据

时间:2015-05-13 12:16:44

标签: c++ struct queue

用户定义队列的前端功能

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]

这个错误背后的原因是什么?还有其他方法来执行此设置吗?请给我一个更好的解决方案来执行此操作。

2 个答案:

答案 0 :(得分:4)

如果您希望能够使用front()修改第一个元素,则需要返回对它的引用,而不是副本:

Type & front();
     ^

您还需要在;之后删除虚假的if(!isEmptyQueue()),如果它为空,可能会执行类似的操作。

答案 1 :(得分:2)

front()应该返回Type&。否则,在实际返回之前,要返回的值是复制

template<class Type>
Type& queueType<Type>::front() { ... }