错误:在'&'之前预期的不合格ID代币

时间:2015-08-04 13:13:58

标签: c++

我目前正在进行单一任务,在其中我们创建Task对象并为每个对象分配后继任务和前任任务以将它们链接在一起。当我尝试返回继任者或前任时,我不断收到此错误(如标题中所示) 这是Task.h的相关部分:

class Task {
private:    
/**
 * The set of predecessor tasks for this task.
 * Can be empty.
 */
std::vector<Task*> task_from;
/**
 * The set of successor tasks for this task.
 * Can be empty.
 */
std::vector<Task*> task_to;

这是Task.cpp文件的相关部分(方法在给定索引处将数据拉出数组):

Task& Task::successor(int index) const {
    if (index < 0) throw TaskException("");
    Task temp = this->&task_to.at(index);
    return temp;
}

请注意,方法签名是为作业预定义的,我们无法更改它们,只需要大括号内的代码即可。

另外,如果我不包含'&amp;'在这个&gt;&amp;任务...中,我收到错误“类型'任务'和'任务*'不兼容”

1 个答案:

答案 0 :(得分:2)

您正试图通过引用返回一个函数局部变量,一旦从函数返回,它将为您留下悬空引用。如果您尝试在Task中获得对vector的引用,那么您的successor功能将如下所示

Task& Task::successor(int index) const {
    if (index < 0) throw TaskException("");
    return *task_to.at(index);
}

知道这不会检查该索引处的Task*是否不是nullptr